标签 选择排序 下的文章

基本思路:每一轮从待排序的数据元素中选择出最小的一个元素,顺序放在已拍好序的数列的最前位置,直到全部待排序的数据元素排完。可以对选择排序进行优化,在每一轮中, 可以同时找到当前未处理元素的最大值和最小值。

public static void sort(Comparable[] arr){
    int left = 0, right = arr.length - 1;
    while(left < right){
        int minIndex = left;
        int maxIndex = right;

        // 在每一轮查找时, 要保证arr[minIndex] <= arr[maxIndex]
        if(arr[minIndex].compareTo(arr[maxIndex]) > 0)
            swap(arr, minIndex, maxIndex);

        for(int i = left + 1 ; i < right; i ++)
            if(arr[i].compareTo(arr[minIndex]) < 0)
                minIndex = i;
            else if(arr[i].compareTo(arr[maxIndex]) > 0)
                maxIndex = i;

            swap(arr, left, minIndex);
            swap(arr, right, maxIndex);

            left ++;
            right --;
        }
    }
}

- 阅读剩余部分 -

数组

数组是一种数据形式,它把具有相同类型的若干变量按一定的顺序组织起来。数组中的每一个数据称为数组元素,数组中的元素以索引来表示其存放的位置,索引从0开始,步长是1。根据存放元素的类型,可分为一维数组和多维数组。

- 阅读剩余部分 -