排序算法值选择排序

28 阅读1分钟

选择排序的通俗解释

以正序为例,选择排序就是每次循环都找到最小的放到前面,设置起始点,从起始点开始往后找,找到比他小的然后和他交换位置,然后结束之后就走下一个位置,所以过程就是不断的选择最适合这个位置的数据,时间复杂度为O(n^2)

选择排序过程的动图展示

选择排序.gif

代码实现

public static void main(String[] args) throws Exception {
    int[] data = new int[]{4,3,2,6,1,8,5,4,10,9};
    sort(data);
    System.out.println(Arrays.toString(data));
}

public static void sort(int[] data){
    //第一层循环位置
    for (int i = 0; i < data.length; i++) {
        //找到合适数据的index
        int index = -1;
        //存储比较的值
        int tempData= data[i];
        for (int j=i;j<data.length;j++){
            //如果找到更小的,那么就记录更小的,然后用更小的去比较,直到找到当前循环最小的
            if(data[j]<tempData){
                index = j;
                tempData = data[j];
            }
        }
        //如果找到了这样的数据,就进行交换
        if(index != -1){
            int temp = data[i];
            data[i] = data[index];
            data[index] = temp;
        }
    }
}