未成年不准谈恋爱

简介: 未成年不准谈恋爱

🧿 前言:

还有一个学期就高考了,最近王老师总是能在操场上发现班里的男女同学成双成对的出现,于是准备给班里的座位来一次大调整。让男同胞们集体往后坐,女同胞集体往前坐。当然一些男同胞和男同胞之间的关系,王老师只能束手无策了,望同学们自爱…


/***********************************************************************

目的:有一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

分析:从数组的前面和后面往中间找:若前面找到偶数,后面找到奇数则交换两个数的位置

平台:Visual studio 2017 && windows

*************************************************************************/

📝 实现代码1

#include<stdio.h>
void Swap_MW(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while(left < right)
  {
    //找偶数
    while(arr[left] % 2 == 1)
    {
      left++;
    }
    //找奇数
    while(arr[right] % 2 == 0)
    {
      right--;
    }
    //交换一对
    if(left < right)
    {
      int temp = arr[left];
      arr[left] = arr[right];
      arr[right] = temp;
    }
  }
}
void Print(int arr[], int sz)
{
  int i = 0;
  for(i = 0; i < sz; i++)
  {
    printf("%d ", arr[i]);
  }
  printf("\n");
}
int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  //交换
  Swap_MW(arr, sz);
  //输出
  Print(arr, sz);
  return 0;
}

⭕ 输出结果:

❓❔ 当你觉得你又行了的时候,现实总会给你迎头痛击

▶ 当这个数组里的内容全是偶数或奇数时,将会越界,所以这个代码是有bug的


/***********************************************************************

目的:改bug

分析:无

平台:Visual studio 2017 && windows

*************************************************************************/

📝 修改代码1

#include<stdio.h>
void Swap_MW(int arr[], int sz)
{
  int left = 0;
  int right = sz - 1;
  while(left < right)
  {
    //找偶数
    while((left < right) && (arr[left] % 2 == 1))//修改1
    {
      left++;
    }
    //找奇数
    while((left < right) && (arr[right] % 2 == 0))//修改2
    {
      right--;
    }
    //交换一对
    if(left < right)
    {
      int temp = arr[left];
      arr[left] = arr[right];
      arr[right] = temp;
    }
  }
}
void Print(int arr[], int sz)
{
  int i = 0;
  for(i = 0; i < sz; i++)
  {
    printf("%d ", arr[i]);
  }
  printf("\n");
}
int main()
{
  int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  //交换
  Swap_MW(arr, sz);
  //输出
  Print(arr, sz);
  return 0;
}



相关文章
|
7月前
|
SQL 算法 vr&ar
☆打卡算法☆LeetCode 176. 第二高的薪水 算法解析
☆打卡算法☆LeetCode 176. 第二高的薪水 算法解析
|
机器学习/深度学习
【刷穿 LeetCode】1109. 航班预订统计 :「差分」&「线段树」
【刷穿 LeetCode】1109. 航班预订统计 :「差分」&「线段树」
leetcode 1921. 消灭怪物的最大数量(每日一题)
leetcode 1921. 消灭怪物的最大数量(每日一题)
87 0
|
存储 缓存 NoSQL
七夕节迟来的礼物
七夕节迟来的礼物
98 0
(拯救选择困难症)随机选择今天中午吃啥
(拯救选择困难症)随机选择今天中午吃啥
(拯救选择困难症)随机选择今天中午吃啥
|
算法 C语言
假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。
(2)当n为奇数时,将前后两部分,即1…n,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;若两端重量相等,则中间的硬币,即第 (n+1)/2枚硬币是假币。n,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;假币问题:有n枚硬币,其中有一枚是假币,已知假币的重量较轻。:因为30位偶数,所以至少要被分一次,然后成为奇数之后,那个假币就是奇数的中位数,所以只需要2次。若输入的硬币数为30,则最少的比较次数为(2),最多的比价次数为(4)。
575 0
|
机器学习/深度学习 安全
洛谷每日三题之第三天(第四天补做)
洛谷每日三题之第三天(第四天补做)
洛谷每日三题之第三天(第四天补做)
|
机器学习/深度学习 缓存
【刷穿 LeetCode】552. 学生出勤记录 II :「记忆化搜索」&「动态规划」&「矩阵快速幂」
【刷穿 LeetCode】552. 学生出勤记录 II :「记忆化搜索」&「动态规划」&「矩阵快速幂」