摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。這里主要介紹選擇排序。一圖勝千言算法描述選擇排序是一種簡(jiǎn)單直觀的排序算法,無論什么數(shù)據(jù)進(jìn)去都是的時(shí)間復(fù)雜度。重復(fù)第二步,直到所有元素均排序完畢。
常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。這里主要介紹選擇排序。
一圖勝千言:
1 算法描述選擇排序是一種簡(jiǎn)單直觀的排序算法,無論什么數(shù)據(jù)進(jìn)去都是O(n2) 的時(shí)間復(fù)雜度。所以用到它的時(shí)候,數(shù)據(jù)規(guī)模越小越好。唯一的好處可能就是不占用額外的內(nèi)存空間了吧。通俗來說就是你們中間誰最小誰就出列,站到隊(duì)列的最后邊,然后繼續(xù)對(duì)著剩余的無序數(shù)組說你們中間誰最小誰就出列,站到隊(duì)列的最后邊,一直到最后一個(gè),繼續(xù)站到最后邊,這樣數(shù)組就有了順序,從小到大。
2 算法步驟在未排序序列中找到最?。ù螅┰?,存放到排序序列的起始位置
從剩余未排序元素中繼續(xù)尋找最?。ù螅┰?,然后放到已排序序列的末尾。
重復(fù)第二步,直到所有元素均排序完畢。
圖片描述
3 算法實(shí)現(xiàn)javascript語言實(shí)現(xiàn)
function selectionSort(arr) { var len = arr.length; var minIndex, temp; for (var i = 0; i < len - 1; i++) { minIndex = i; for (var j = i + 1; j < len; j++) { if (arr[j] < arr[minIndex]) { // 尋找最小的數(shù) minIndex = j; // 將最小數(shù)的索引保存 } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } return arr; }
python語言實(shí)現(xiàn)
def selectionSort(arr): for i in range(len(arr)-1): for j in range(i+1, len(arr)): if arr[j] < arr[i]: arr[i], arr[j] = arr[j], arr[i] return arr
java語言實(shí)現(xiàn)
public static void selectSort(int[] numbers){ int size = numbers.length; //數(shù)組長(zhǎng)度 int temp = 0 ; //中間變量 for(int i = 0 ; i < size ; i++){ int k = i; //待確定的位置 //選擇出應(yīng)該在第i個(gè)位置的數(shù) for(int j = size -1 ; j > i ; j--){ if(numbers[j] < numbers[k]){ k = j; } } //交換兩個(gè)數(shù) temp = numbers[i]; numbers[i] = numbers[k]; numbers[k] = temp; } }
go語言實(shí)現(xiàn)
func selectionSort(arr []int) []int { length := len(arr) for i := 0; i < length-1; i++ { min := i for j := i + 1; j < length; j++ { if arr[min] > arr[j] { min = j } } arr[i], arr[min] = arr[min], arr[i] } return arr }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91729.html
摘要:之所以把冒泡排序選擇排序插入排序放在一起比較,是因?yàn)樗鼈兊钠骄鶗r(shí)間復(fù)雜度都為。其中,冒泡排序就是原地排序算法。所以冒泡排序是穩(wěn)定的排序算法。選擇排序思路選擇排序算法的實(shí)現(xiàn)思路有點(diǎn)類似插入排序,也分已排序區(qū)間和未排序區(qū)間。 showImg(https://segmentfault.com/img/bVbuvnj?w=900&h=250); 1. 前言 算法為王。 想學(xué)好前端,先練好內(nèi)功,...
摘要:常見的內(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=...
摘要:代碼實(shí)現(xiàn)六堆排序算法簡(jiǎn)介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。九計(jì)數(shù)排序算法簡(jiǎn)介計(jì)數(shù)排序是一種穩(wěn)定的排序算法。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡(jiǎn)介 插入排序(Insertion-Sort)的算法描述是一種簡(jiǎn)單直觀的排序算法。它...
閱讀 4289·2021-09-26 10:11
閱讀 2686·2021-07-28 00:37
閱讀 3233·2019-08-29 15:29
閱讀 1194·2019-08-29 15:23
閱讀 3140·2019-08-26 18:37
閱讀 2479·2019-08-26 10:37
閱讀 608·2019-08-23 17:04
閱讀 2357·2019-08-23 13:44