algorithm - 使用递归排序

标签 algorithm recursion sorting

我有以下函数来对无序数组进行排序,使其前面有偶数,后面有奇数。有没有一种方法可以不使用任何循环来完成它?

//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/

相关文章:

c# - 访问 N(未知)维矩阵中所有点的算法

java - 我在网上找到的一个有趣的谷歌面试算法,需要线性时间

algorithm - 为什么 LRU 优于 FIFO?

php - PHP中数字的递归和阶乘

javascript - 如何从javaScript中的一组数组中形成最大数

algorithm - 比较 N 维空间中两组点的更快方法?

c - C 中的递归问题

c++ - 迭代对数求幂

python - 使用python对csv文件进行排序

java - 根据自定义比较器对整数数组进行排序