数组奇偶排序 c语言,C语言实现数组的奇偶排序

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

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

#define LEN 10

#include

#include

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 

{

if (arr[i] % 2)

{

odd[j] = arr[i];

j++;

}

else

{

dou[k] = arr[i];

k++;

}

}

for (int i = 0; i 

{

if (i <= j)

{

arr[i] = odd[i];

}

else

{

arr[i] = dou[i - j - 1];

}

}

for (int i = 0; i 

{

printf("%d ", arr[i]);

}

system("pause");

return 0;

}

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

#include

int* doubleline(int *a, int size)//冒泡排序实现奇偶排序所封装的函数

{

int i = 0;

for (i = 0; i 

{

for (int j = 0; 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 

{

printf("%d ",*(p+i));

}

system("pause");

return 0;

}

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

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

你可能感兴趣的:(数组奇偶排序,c语言)