私は次のような問題を解決しようとしています...配列では、すべての奇数要素を最初に移動し、偶数要素を最後に移動する必要があります...この方法を試しましたが、ここで偶数の順序が失われます...できます誰か助けて ???????私が得る出力は... 1 3 5 7 9 4 8 2 6
線形時間インプレースソリューションを期待しています...
#include<stdio.h>
void swap(int *p,int *q)
{
*p=*p^*q;
*q=*p^*q;
*p=*p^*q;
}
int main()
{
int arr[]={ 2, 1 ,4 ,3 ,6 ,5 ,8 ,7 ,9};
int odd=0;
int even=0;
int arr_size = sizeof(arr)/sizeof(arr[0]);
while(even< arr_size){
if(arr[even]&1)
swap(&arr[odd++],&arr[even++]);
else
even++;
}
int i=0;
for(i=0;i<arr_size ;i++)
printf("%d ",arr[i]);
return 0;
}