摘要:一原理每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最后,直到全部記錄排序完畢。排序結果注每一趟排序獲得最小數的方法循環進行比較。
一、原理
每一趟從待排序的記錄中選出最小的元素,順序放在已排好序的序列最后,直到全部記錄排序完畢。也就是:每一趟在n-i+1(i=1,2,3...n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。
二、基本思想
給定數組:int[] arr = {里面有n個數據};第1趟排序,在待排序數據arr[1]arr[n]中選出最小的數據,將它與arr[1]交換;第2趟,在待排序數據arr[2]arr[n]中選出最小的數據,將它與arr[2]交換;以此類推,在i趟待排序數據arr[i]~arr[n]中選出最小的數據,將它與arr[i]交換,直到全部排序完成。
三、舉例
數組 int[] arr = {5,2,8,9,1};
第一趟排序:原始數據:5,2,8,9,1
最小數據是1,把1放在首位,也就是1和5互換位置,
排序結果:1,2,8,9,5
第二趟排序:
第1以外的數據{2,8,9,5}進行比較,2最小,不變
排序結果:1,2,8,9,5
第三趟排序:
除1,2以外的數據{8,9,5}進行比較,5最小,5和8互換位置,
排序結果1,2,5,8,9
第四趟排序:
除1,2,5以外的數據{8,9}進行比較,8最小,不變。
排序結果1,2,5,8,9
注:每一趟排序獲得最小數的方法:for循環進行比較。
代碼實例:
public class SelectionSort { public static void sort(int[] arr) { int n = arr.length;//數組長度 for (int i = 0; i < n; i++) { //尋找[i,n)區間里的最小值的索引 int minIndex = i; for (int j = i+1; j < n; j++){ if (arr[j] < arr[minIndex]) minIndex = j; } swap(arr, i, minIndex); } } /** * 交換數組位置 * @param arr * @param i * @param j */ private static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void main(String[] args) { int[] arr = {10,9,8,7,6,5,3,2,1}; SelectionSort.sort(arr); for (int i = 0; i < arr.length; i++){ System.out.print(arr[i]); System.out.print(" "); } System.out.println(); }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68836.html
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。用一張圖概括歸并排序英語,或,是創建在歸并操作上的一種有效的排序算法,效率為。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。用一張圖概括歸并排序英語,或,是創建在歸并操作上的一種有效的排序算法,效率為。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...
摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。用一張圖概括歸并排序英語,或,是創建在歸并操作上的一種有效的排序算法,效率為。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segmentfault.com/img/bVNwuO?w=966&h=...
摘要:而在證明算法是正確的基礎上,第二步就是分析算法的時間復雜度。算法的時間復雜度反映了程序執行時間隨輸入規模增長而增長的量級,在很大程度上能很好反映出算法的優劣與否。 showImg(https://segmentfault.com/img/remote/1460000016451712?w=800&h=341); 前言 雖然工作中,你覺得自己并沒有涉及到算法這方面的東西,但是算法是程序的...
摘要:代碼實現六堆排序算法簡介堆排序是指利用堆這種數據結構所設計的一種排序算法。九計數排序算法簡介計數排序是一種穩定的排序算法。計數排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...
閱讀 2637·2023-04-26 02:17
閱讀 1610·2021-11-24 09:39
閱讀 1070·2021-11-18 13:13
閱讀 2598·2021-09-02 15:11
閱讀 2770·2019-08-30 15:48
閱讀 3406·2019-08-30 14:00
閱讀 2431·2019-08-29 13:43
閱讀 658·2019-08-29 13:07