將陣列中奇數都放前面,偶數都放在後面
阿新 • • 發佈:2019-01-29
void adjust(int *arr,int left,int right)
{
int temp;
while(left<right)
{
if(1==left%2)
left++;
if(0==right%2)
right--;
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
int main()
{
int i=0;
int a[]={1,2,3,4,5,6,7,8,9};
adjust(a,0,8);
for(i=0;i<9;i++)
{
printf("%d ",a[i]);
}
system("pause");
return 0;
}
但是在測試用例為1,3,5,7,2,4,6,8時,程式執行的結果會出錯,原因是在交換前也必須判斷left<right.
修改後的程式為:
void adjust(int *arr,int left,int right)
{
int temp;
while(left<right)
{
if(1==left%2)
left++;
if(0==right%2)
right--;
if(left<right)
{
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
}
left++;
right--;
}
}