【问题标题】:Selection Sort by recursive only选择仅按递归排序
【发布时间】:2017-04-13 01:36:44
【问题描述】:

我已经完成了使用递归(不允许循环)来实现选择排序算法的作业。我已经为此工作了好几天,但我无法弄清楚 我所做的只是:

public void Sort(int[] a){
    int firstIndex=0,searchIndex=firstIndex+1,minIndex=firstIndex;
    swap(a, firstIndex, findMinIndex(a, searchIndex, minIndex));    
    }


private int findMinIndex(int[] a,int searchIndex,int minIndex){
    if(searchIndex<a.length){
        if(a[searchIndex]<a[minIndex])
            minIndex=searchIndex;
        return findMinIndex(a,searchIndex+1,minIndex);
    }
    return minIndex;            

}

private void swap(int arr[],int firstIndex,int secondIndex){
    int temp=arr[firstIndex];
    arr[firstIndex]=arr[secondIndex];
    arr[secondIndex]=temp;
}

我怎样才能让第一个方法尽可能多地运行,直到数组被排序?

谢谢你们!

【问题讨论】:

  • 提示:如果您在原始实现中有嵌套循环,那么在递归版本中您可能需要两个递归,而不仅仅是一个。

标签: java recursion


【解决方案1】:

一旦找到最小元素并将其填充到第一个数组位置,您需要在数组的 rest 上递归。增加你的 firstIndex 并重复,直到数组中只剩下一个元素。

这足以让你感动吗?

【讨论】:

    猜你喜欢
    • 2015-02-13
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2018-11-26
    • 2019-05-09
    • 2019-03-09
    • 2013-12-27
    相关资源
    最近更新 更多