简单排序之选择排序

口诀:
两两相比
每轮取最小数交换
外层n-1
内层(i + 1 ~ n)

优化:相比冒泡排序,虽然比较次数没变,但是交换次数减少了。

package sort;

/**
 * 选择排序
 */
public class Selection {

    public static void main(String[] args) {

        int[] array = { 1, 3, 5, 2, 4 };

        System.out.println("未排序前:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }

        selectionSort(array);
        System.out.println();
        System.out.println("排序后:");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
    }

    /*
    选择排序:两两相比、每轮取最小数交换、外层n-1、内层(i + 1 ~ n)
     */
    public static void selectionSort(int[] array){

        for (int i = 0; i < array.length - 1; i++) {
            int index = i; //待定的位置
            for (int j = i + 1; j < array.length; j++) {

                if(array[index] > array[j]){
                    index = j;
                }
            }
            //交换位置
            if(index != i){
                int temp = array[index];
                array[index] = array[i];
                array[i] = temp;
            }
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_33591873/article/details/107206245
今日推荐