国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript選擇排序算法原理與實現方法示例

2019-11-19 13:20:20
字體:
來源:轉載
供稿:網友

本文實例講述了JavaScript選擇排序算法原理與實現方法。分享給大家供大家參考,具體如下:

一、選擇排序簡介

冒泡排序、插入排序、選擇排序合稱為簡單排序。下面是選擇排序的思想:

假設有一個數組a,我們想象成有一個班級名叫a班,現在全班隨意排成一排,排頭的位置是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]還沒有排好序,經過一次比較,就把第二高的隊員放入了a[a.length-2]位置,a[a.length-1]位置隊員肯定是最高的,排序完成。

二、JavaScript實現選擇排序

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));

說明:

如果數組僅有一個元素,不會進入外層for循環,因而相當于沒有進行任何操作,結果也是正確的。

上述代碼使用在線HTML/CSS/JavaScript代碼運行工具http://tools.VeVB.COm/code/HtmlJsRun測試運行結果如下:

PS:這里再為大家推薦一款關于排序的演示工具供大家參考:

在線動畫演示插入/選擇/冒泡/歸并/希爾/快速排序算法過程工具:
http://tools.VeVB.COm/aideddesign/paixu_ys

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數學運算用法總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清镇市| 手游| 兴和县| 桦南县| 宁蒗| 吉水县| 盱眙县| 大邑县| 龙州县| 漳平市| 轮台县| 随州市| 饶阳县| 咸宁市| 巫溪县| 白银市| 土默特右旗| 兰溪市| 苍南县| 甘孜县| 阿拉善盟| 扶余县| 江孜县| 蕉岭县| 遂溪县| 宁城县| 星子县| 原平市| 集贤县| 如东县| 资兴市| 洱源县| 绵竹市| 太仆寺旗| 新绛县| 沙湾县| 错那县| 宁南县| 云安县| 孝义市| 崇明县|