選擇排序

選擇排序

package com.zgz;

/**
 * 選擇排序
 * @author guozhenZhao
 * @date 2019年3月31日
 */
public class SelectionSort {

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

        //每次遍歷同時找到最大值和最小值所在的位置
        for(int i=0; i<arr.length/2; i++) {
            int minPos = i;
            int maxPos = arr.length-1-i;
            for(int j=i+1; j<arr.length; j++) {
                if(arr[minPos]>arr[j]) {
                    minPos = j;
                }
                if(arr[maxPos]<arr[arr.length-1-j]) {
                    maxPos = j ;
                }
            }

//          System.out.println("minPos: "+minPos);
//          System.out.println("maxPos: "+maxPos);
            //交換位置
            swap(arr, i, minPos);
            swap(arr, arr.length-1-i, maxPos);
//          print(arr);
        }

        //打印
        print(arr);
    }

    static void swap(int[] arr, int i, int j) {
        int temp = arr[j];
        arr[j] = arr[i];
        arr[i]= temp;
    }

    static void print(int[] arr) {
        for(int i=0; i<arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
        System.out.println();
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章