1、数据结构与算法——选择排序 - liuxiaofei2010S/special-column GitHub Wiki

因为原先学过java,开发过android,所以用《算法》(第四版)学习数据结构与算法,主要语言是java,开发工具为IntelliJ IDEA。

选择排序是相对比较简单的排序方法,主要思想是开始从第一项到最后一项,选择出当前数组中最小的值,与当前数组的最前端项更换位置。然后第二项到最后一项之间的数组数据进行第二次选择数据并更换位置,以此类推,直到最后一项不用去比较或者更换。

以下是相关代码:

public class SelectSort {

    public static void main(String[] args) {
        int[] array = new int[]{2, 4, 7, 0, 6, 8, 1, 5, 9, 3};
        sort(array);
    }

    private static void sort(int[] array) {
        for (int i = 0; i < array.length; i++) {
            int index = i;         //只需记录下标
            for (int k = i + 1; k < array.length; k++) {
                if (array[index] > array[k]) {
                    index = k;
                }
            }
            int temp = array[index];
            array[index] = array[i];
            array[i] = temp;
        }
        for (int d = 0; d < array.length; d++) {
            System.out.print(array[d]);
        }
    }
}

选择排序的数据的比较次数为 N(N-1)/2,近似等于 N²/2;数据交换次数为 N。

选择排序的特点主要有两个:1、运行时间与数组输入无关;2、在所有的算法中,数据移动(交换)次数是最小的。