设一个一维整数数组中有n(n>1)个元素,设计一个在时间和空间两方面尽可能高效的算法,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求: 根据设计思想,采用C、C++或Java语言描述算法,关键之处给出注释。

admin2014-04-17  30

问题 设一个一维整数数组中有n(n>1)个元素,设计一个在时间和空间两方面尽可能高效的算法,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求:
根据设计思想,采用C、C++或Java语言描述算法,关键之处给出注释。

选项

答案算法实现如下: void ReorderOddEven(int a[],n) { int left=0; //定义指向数组第一个元素的下标变量 int right=n一1; //定义指向数组最后一个元素的下标变量 int temp; //元素交换的中间变量 while (left<right) //当两个下标相遇后才结束循环 { if(a[left]%2!=0) //如果left指向的元素是奇数,则left下标向后移动一位 { left++; continue; } if(a[right]%2==0) //如果right指向的元素是偶数,则right下标向左移动一位 { right--; continue; } //交换元素 temp=a[left]; a[left]=a[right]; a[right]=temp; //交换完成后,两边的下标各移动一位 left++; right--; } }

解析
转载请注明原文地址:https://kaotiyun.com/show/Xixi777K
0

最新回复(0)