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