在工作笔试时经常会碰到这个问题:一个数组序列,一半为奇数,一半为偶数,重新排列使得所有奇数位于奇数下标上,所有偶数位于偶数下标上。 这个问题在了解了快速排序算法后很容易得出答案,其实就是快速排序算法得前半部分。用两个变量even_i,odd_i分别遍历数组中下标为偶数和奇数得数,当Array[even_i]为奇数并且Array[odd_i]为偶数时就交换。代码如下; void sort(int Array[]) { int even_i=0; int odd_i=0; while(odd_i<n&&even_i<n) { while(odd_i<n&&a[odd_i]%2==1) odd_i+=2; while(even_i<n&&a[even_i]%2==0) even_i+=2; if(odd_i<n&&even_i<n) { swap(a[odd_i],a[even_i]); odd_i+=2; even_i+=2; } } } 在vc6.0调试成功。 |
联系客服