選擇排序算法


算法簡介

選擇排序是一種簡單直觀的排序算法,無論什么數據進去都是 O(n²) 的時間復雜度。所以用到它的時候,數據規模越小越好。唯一的好處可能就是不占用額外的內存空間吧。

算法原理如下動圖:

圖片來源(https://www.runoob.com/w3cnote/selection-sort.html

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
  • 再從剩余未排序元素中繼續尋找最小(大)元素,然后放到已排序序列的末尾。
  • 重復第二步,直到所有元素均排序完畢。

代碼實現:

/**
 * 選擇排序
 */
public class SelectSort {

    public static void SelectSort(int[] arr) {
        if (arr == null || arr.length <= 1) {
            return;
        }
        for (int i = 0; i < arr.length - 1; i++) { //數組比較次數n-1
            int index = i; //保存當前最小元素的位置
            for (int j = i + 1; j < arr.length; j++) {  //遍歷待排序數組元素(i之后的元素)
                if (arr[index] > arr[j]) {  //如果已排序中  較大元素  大於   待排序元素中的  最小元素 則更換元素對應索引
                    index = j;
                }
            }
            int temp = arr[index]; //置換位置
            arr[index] = arr[i];
            arr[i] = temp;
        }
    }
    public static void main(String[] args) {
        int[] arr={2,7,5,3,6,1,4};
        SelectSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM