这是Selection Sort的可能实现吗?

时间:2016-11-30 08:59:47

标签: algorithm sorting selection-sort

我想知道,如果我的SelectionSort的以下实现是一个可能的实现。感谢你们! :)

    public static int[] mySelectionSort (int [] array){

    int position = 0;
    int tmp;

    for (int j = array.length -1; j >= 0; j--){

        int max = array[0];

        for (int i = 0; i <= j; i++){

            if (array[i] >= max){

                max = array[i];
                position = i;
            }   
        }

        tmp = array[j];
        array[j] = max;
        array[position] = tmp;
    }
    return array;
}

1 个答案:

答案 0 :(得分:0)

是的,这是选择排序变化。

你可以使用for (int i = 0; i < j省略最后一次内循环运行 - 没有意义与自己交换最后一项。

可以考虑循环不变量:

  • 有两个子阵列 - 开始部分B和结束部分E
  • E包含已排序的序列
  • E中的所有项目都不小于B项目
  • B中最大的项目与E
  • 连接