您的位置:首页 > 编程语言 > C语言/C++

C语言 调整一个数组的顺序,使得奇数在总在偶数的前边

2016-05-10 21:02 225 查看
思路:

类似快速排序中的POTITION函数,用两个指针,一个指针P1依次向后遍历判断是不是奇数,另一个P2保持一个特性,就是P2指针前的数字都是P1判断过的奇数,后面一直到P1指针的位置都是判断过的偶数,当P1新找到一个奇数时,将P2++后并与P1所指的数字进行交换,直到P1完成循环。

#include<stdio.h>

void potition(int arr[], int size)
{
if(arr[0]%2 == 0)
{

}
int i = 0;
int j = 0;
for(i = 0; i<size; i++)
{
if(arr[i]%2 != 0)
{
int tmp = arr[i];
++j;
arr[i] = arr[j];
arr[j] = tmp;
}
}
int tmp = arr[0];
arr[0] = arr[j];
arr[j] = tmp;
}
int main()
{
int arr[] = {2,4,1,3,6,7,8,9};
potition(arr,sizeof(arr)/sizeof(int));
int i = 0;
for(i = 0; i < sizeof(arr)/sizeof(int); i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: