JavaScript選擇排序算法原理與實現(xiàn)方法示例
本文實例講述了JavaScript選擇排序算法原理與實現(xiàn)方法。分享給大家供大家參考,具體如下:
一、選擇排序簡介
冒泡排序、插入排序、選擇排序合稱為簡單排序。下面是選擇排序的思想:
假設(shè)有一個數(shù)組a,我們想象成有一個班級名叫a班,現(xiàn)在全班隨意排成一排,排頭的位置是a[0],排尾的位置是a[a.length-1]。但高矮順序不是有序的,我們想從矮到高排,排頭最矮,排尾最高。
選擇排序是這樣工作的:
第一輪:
(1)a[1]位置隊員與a[0]位置隊員比較,如果比a[0]位置隊員矮,就把a[1]的位置記住,如果不比a[0]隊員矮,就把a[0]位置記住,記住位置的隊員是目前已知最矮的;
(2)a[2]位置隊員與記錄位置隊員比較,如果比記錄位置隊員矮,就把a[2]改為記錄位置,如果不比記錄位置隊員矮則不改變記錄位置,記錄位置的隊員是目前已知最矮的;
(3)a[3]位置隊員與記錄位置隊員比較,如果比記錄位置隊員矮,就把a[3]改為記錄位置,如果不比記錄位置隊員矮則不改變記錄位置,記錄位置的隊員是目前已知最矮的;
······
以此類推,直到a[a.length-1]位置隊員與記錄位置隊員比較完成,這樣記錄位置隊員是所有隊員中最矮的。
但是,我們知道最終要完成排序,最矮的肯定在a[0]位置,因此交換a[0]位置隊員和記錄位置隊員。最矮的隊員成功入坑a[0]號位!
第二輪:
重復第一輪的過程,只不過這次是從a[1]位置開始,依次比較,最終將記錄位置隊員放入a[1]。第二矮的隊員成功入坑a[1]號位!
······
最后一輪:
從a[a.length-2]位置開始依次比較,這時只剩a[a.length-2]和a[a.length-1]還沒有排好序,經(jīng)過一次比較,就把第二高的隊員放入了a[a.length-2]位置,a[a.length-1]位置隊員肯定是最高的,排序完成。
二、JavaScript實現(xiàn)選擇排序
function select_sort(arr) { var k; var temp; var l=arr.length; for (var i = 0; i < l-1; i++) { k=i; for (var j = i+1; j < l; j++) { if (arr[j]<arr[k]) { k=j; } } temp=arr[k]; arr[k]=arr[i]; arr[i]=temp; } return arr; } var a=[11,2,3,445,7,32,71,1,94]; console.log(select_sort(a)); var b=[94,11]; console.log(select_sort(b));
說明:
如果數(shù)組僅有一個元素,不會進入外層for循環(huán),因而相當于沒有進行任何操作,結(jié)果也是正確的。
上述代碼使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試運行結(jié)果如下:
PS:這里再為大家推薦一款關(guān)于排序的演示工具供大家參考:
在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)學運算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- JavaScript算法學習之冒泡排序和選擇排序
- JavaScript實現(xiàn)的九種排序算法
- JavaScript插入排序算法原理與實現(xiàn)方法示例
- 常用的 JS 排序算法 整理版
- JS排序算法之冒泡排序,選擇排序與插入排序?qū)嵗治?/a>
- JS排序算法之希爾排序與快速排序?qū)崿F(xiàn)方法
- javascript基本常用排序算法解析
- js算法中的排序、數(shù)組去重詳細概述
- 幾種經(jīng)典排序算法的JS實現(xiàn)方法
- Javascript中的常見排序算法
- javascript快速排序算法詳解
- JavaScript中幾種常見排序算法小結(jié)
- javascript中可能用得到的全部的排序算法
相關(guān)文章
js/jquery遍歷對象和數(shù)組的方法分析【forEach,map與each方法】
這篇文章主要介紹了js/jquery遍歷對象和數(shù)組的方法,結(jié)合實例形式分析了數(shù)組遍歷的forEach,map與each方法常見使用技巧,需要的朋友可以參考下2019-02-02關(guān)于小程序優(yōu)化的一些建議(小結(jié))
這篇文章主要介紹了關(guān)于小程序優(yōu)化的一些建議(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12