c/c++语言开发共享C语言实现数组的奇偶排序

今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。     思路1:创建新的数组对所求数组进行遍历,技术放在一起偶数放在一起,再用穿件数组中的内容替换到所求数组中,代码

今天遇到了个实现数组的奇偶排序的问题,与大家分享下解决思路。

    思路1:创建新的数组对所求数组进行遍历,技术放在一起偶数放在一起,再用穿件数组中的内容替换到所求数组中,代码如下:

 

  #define len 10  #include<stdio.h>  #include<stdlib.h>  int main()  {  int arr[len] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };//数组的初始化  int odd[len] = { 0 };//用来存储奇数  int dou[len] = { 0 };//用来存储偶数  int j = 0;  int k = 0;  for (int i = 0; i < len; i++)  {  if (arr[i] % 2)  {  odd[j] = arr[i];  j++;  }  else  {  dou[k] = arr[i];  k++;  }  }  for (int i = 0; i < len; i++)//对目标数组的更改  {  if (i <= j)  {  arr[i] = odd[i];  }  else  {  arr[i] = dou[i - j - 1];  }  }  for (int i = 0; i < len; i++)  {  printf("%d ", arr[i]);  }  system("pause");  return 0;  }

 

    思路2:如果不允许创建新的空间变量怎么办呢,我们可以用冒泡排序的思想来解决这个问题,如果这个数是奇数,我们就把它冒泡的数组顶端,依次冒泡下去,我们就能得到答案,实现代码如下:

  #include<stdio.h>  int* doubleline(int *a, int size)//冒泡排序实现奇偶排序所封装的函数  {  int i = 0;  for (i = 0; i < size; i++)//冒泡过程  {  for (int j = 0; j < size - i - 1; j++)  {  if ((*(a + j) % 2)==0)  {  int tmp = *(a + j);  *(a + j) = *(a + j + 1);  *(a + j + 1) = tmp;  }  }  }  return a;  }  int main()//调试过程  {  int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };  int size = sizeof(arr) / sizeof(int);//求取数组大小  int *p = doubleline(arr, size);  for (int i = 0; i < size; i++)  {  printf("%d ",*(p+i));  }  system("pause");  return 0;  }

 

    个人认为冒泡排序虽然节省了空间,但是如果数组特别大的时候这样做的效率是极其低下的,希望运用的时候斟酌下。

如有什么不足之处,希望批评指正。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/606050.html

(0)
上一篇 2021年5月13日
下一篇 2021年5月13日

精彩推荐