我有以下函数来对无序数组进行排序,使其前面有偶数,后面有奇数。有没有一种方法可以不使用任何循环来完成它?
//front is 0, back =array.length-1;
arrangeArray (front, back);
public static void arrangeArray (int front, int back)
{
if (front != back || front<back)
{
while (numbers [front]%2 == 0)
front++;
while (numbers[back]%2!=0)
back--;
if (front < back)
{
int oddnum = numbers [front];
numbers[front]= numbers[back];
numbers[back]=oddnum;
arrangeArray (front+1, back-1);
}
}
}
最佳答案
Mergesort对于没有循环的代码来说是相当微不足道的:
void mergesort(int lo, int hi)
{
if (lo<hi)
{
int m=(lo+hi)/2;
mergesort(lo, m);
mergesort(m+1, hi);
merge(lo, m, hi);
}
}
我会把它的偶数/奇数排序作为练习留给读者:)
(听起来像作业)
关于algorithm - 使用递归排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2718079/