摘要:一選擇排序基本思想找到數(shù)組最小的元素,將它和數(shù)組紅第一個(gè)元素交換位置,接下來,在剩下的元素中找到最小的元素,將它與數(shù)組的第二個(gè)元素交換位置,往復(fù)如此,直到將整個(gè)數(shù)組排序。特點(diǎn)運(yùn)行時(shí)間和輸入無關(guān)。
一. 選擇排序 1.基本思想
找到數(shù)組最小的元素,將它和數(shù)組紅第一個(gè)元素交換位置,接下來,在剩下的元素中找到最小的元素,將它與數(shù)組的第二個(gè)元素交換位置,往復(fù)如此,直到將整個(gè)數(shù)組排序?;军c(diǎn)就是不斷地選擇剩余元素之中的最小者。
2.特點(diǎn)運(yùn)行時(shí)間和輸入無關(guān)。
對于長度為N的數(shù)組,選擇排序需要大約N2/2次比較和N次交換
數(shù)據(jù)移動是最少的
交換次數(shù)和數(shù)組的大小是線性關(guān)系。
使用javascript實(shí)現(xiàn)的效果
function select(array){ var len=array.length; for(var i=0;i二、插入排序 1.基本思想 將一個(gè)元素插入到其它已經(jīng)有序的牌中的適當(dāng)位置,因此其他所有元素在插入之前都向右移動一位,為新元素騰出空間。
2.特點(diǎn)插入排序所需的時(shí)間取決于輸入中元素的初始順序,一個(gè)有序的序列比隨機(jī)順序的序列花費(fèi)的時(shí)間更少。
對于隨進(jìn)排列的長度為N且主鍵不重復(fù)的數(shù)組,最壞情況下需要輸入N2/2function insert(array) { for (var i = 1; i < array.length; i++) { var key = array[i]; var j = i - 1; while (j >= 0 && array[j] > key) { array[j + 1] = array[j]; j--; } array[j + 1] = key; } return array; }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91648.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)功,...
摘要:筆者寫的數(shù)據(jù)結(jié)構(gòu)與算法之美系列用的語言是,旨在入門數(shù)據(jù)結(jié)構(gòu)與算法和方便以后復(fù)習(xí)。這應(yīng)該是目前較為簡單的十大經(jīng)典排序算法的文章講解了吧。比如原本在的前面,而,排序之后,在的后面十大經(jīng)典排序算法冒泡排序思想冒泡排序只會操作相鄰的兩個(gè)數(shù)據(jù)。 showImg(https://segmentfault.com/img/bVbvHet); 1. 前言 算法為王。想學(xué)好前端,先練好內(nèi)功,內(nèi)功不行,就...
摘要:代碼實(shí)現(xiàn)六堆排序算法簡介堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。九計(jì)數(shù)排序算法簡介計(jì)數(shù)排序是一種穩(wěn)定的排序算法。計(jì)數(shù)排序不是比較排序,排序的速度快于任何比較排序算法。 贊助我以寫出更好的文章,give me a cup of coffee? 2017最新最全前端面試題 1、插入排序 1)算法簡介 插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它...
摘要:推薦一下,,這里還有個(gè)可視化的排序博客,各大排序算法的實(shí)現(xiàn)都栩栩如生。堆排序堆排序是指利用堆這種數(shù)據(jù)結(jié)構(gòu)所設(shè)計(jì)的一種排序算法。共勉參考維基百科排序搜索聊一聊排序算法秒殺種排序算法版排序圖解排序算法實(shí)現(xiàn)歡迎來我的博客交流 最近看到了很多公司都在準(zhǔn)備明年的實(shí)習(xí)校招,雖然離三月份還有一段時(shí)間,感覺已經(jīng)可以準(zhǔn)備了。在網(wǎng)上看了一些排序算法和數(shù)組去重操作,感覺都寫的很好,心血來潮,也來寫一寫。 s...
摘要:快速排序,參考排序算法的完整實(shí)現(xiàn)各種排序算法的完整實(shí)現(xiàn)如下冒泡排序選擇排序插入排序歸并排序快速排序,參考排序方法驗(yàn)證冒泡排序選擇排序插入排序歸并排序快速排序源碼地址的數(shù)據(jù)結(jié)構(gòu)與算法三源碼 1 排序和搜索算法 1.1 排序算法 1.1.1 冒泡排序 冒泡排序比較任何兩個(gè)相鄰的項(xiàng),如果第一個(gè)比第二個(gè)大,則交換它們。元素項(xiàng)向上移動至正確的順序,就好像氣泡升至表面一樣,冒泡排序因此得名。冒泡...
摘要:冒泡排序冒泡排序也是一種簡單直觀的排序算法。但希爾排序是非穩(wěn)定排序算法??焖倥判蛴质且环N分而治之思想在排序算法上的典型應(yīng)用。本質(zhì)上來看,快速排序應(yīng)該算是在冒泡排序基礎(chǔ)上的遞歸分治法。 冒泡排序 冒泡排序(Bubble Sort)也是一種簡單直觀的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就...
閱讀 3903·2021-11-22 13:54
閱讀 2675·2021-09-30 09:48
閱讀 2361·2021-09-28 09:36
閱讀 3113·2021-09-22 15:26
閱讀 1343·2019-08-30 15:55
閱讀 2509·2019-08-30 15:54
閱讀 1426·2019-08-30 14:17
閱讀 2341·2019-08-28 18:25