欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript選擇排序算法原理與實(shí)現(xiàn)方法示例

 更新時(shí)間:2018年08月06日 09:42:51   作者:夜色蕪染  
這篇文章主要介紹了JavaScript選擇排序算法原理與實(shí)現(xiàn)方法,簡(jiǎn)單分析了選擇排序算法的概念、原理并結(jié)合實(shí)例形式分析了JavaScript選擇排序算法的相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下

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

一、選擇排序簡(jiǎn)介

冒泡排序、插入排序、選擇排序合稱(chēng)為簡(jiǎn)單排序。下面是選擇排序的思想:

假設(shè)有一個(gè)數(shù)組a,我們想象成有一個(gè)班級(jí)名叫a班,現(xiàn)在全班隨意排成一排,排頭的位置是a[0],排尾的位置是a[a.length-1]。但高矮順序不是有序的,我們想從矮到高排,排頭最矮,排尾最高。

選擇排序是這樣工作的:

第一輪:

(1)a[1]位置隊(duì)員與a[0]位置隊(duì)員比較,如果比a[0]位置隊(duì)員矮,就把a[1]的位置記住,如果不比a[0]隊(duì)員矮,就把a[0]位置記住,記住位置的隊(duì)員是目前已知最矮的;

(2)a[2]位置隊(duì)員與記錄位置隊(duì)員比較,如果比記錄位置隊(duì)員矮,就把a[2]改為記錄位置,如果不比記錄位置隊(duì)員矮則不改變記錄位置,記錄位置的隊(duì)員是目前已知最矮的;

(3)a[3]位置隊(duì)員與記錄位置隊(duì)員比較,如果比記錄位置隊(duì)員矮,就把a[3]改為記錄位置,如果不比記錄位置隊(duì)員矮則不改變記錄位置,記錄位置的隊(duì)員是目前已知最矮的;
······

以此類(lèi)推,直到a[a.length-1]位置隊(duì)員與記錄位置隊(duì)員比較完成,這樣記錄位置隊(duì)員是所有隊(duì)員中最矮的。

但是,我們知道最終要完成排序,最矮的肯定在a[0]位置,因此交換a[0]位置隊(duì)員和記錄位置隊(duì)員。最矮的隊(duì)員成功入坑a[0]號(hào)位!

第二輪:

重復(fù)第一輪的過(guò)程,只不過(guò)這次是從a[1]位置開(kāi)始,依次比較,最終將記錄位置隊(duì)員放入a[1]。第二矮的隊(duì)員成功入坑a[1]號(hào)位!

······
最后一輪:

a[a.length-2]位置開(kāi)始依次比較,這時(shí)只剩a[a.length-2]a[a.length-1]還沒(méi)有排好序,經(jīng)過(guò)一次比較,就把第二高的隊(duì)員放入了a[a.length-2]位置,a[a.length-1]位置隊(duì)員肯定是最高的,排序完成。

二、JavaScript實(shí)現(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));

說(shuō)明:

如果數(shù)組僅有一個(gè)元素,不會(huì)進(jìn)入外層for循環(huán),因而相當(dāng)于沒(méi)有進(jìn)行任何操作,結(jié)果也是正確的。

上述代碼使用在線HTML/CSS/JavaScript代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試運(yùn)行結(jié)果如下:

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

在線動(dòng)畫(huà)演示插入/選擇/冒泡/歸并/希爾/快速排序算法過(guò)程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • JavaScript截取字符串的2個(gè)函數(shù)介紹

    JavaScript截取字符串的2個(gè)函數(shù)介紹

    這篇文章主要介紹了JavaScript截取字符串的2個(gè)函數(shù)介紹,它們分別是substring和substr函數(shù),本文用實(shí)例講解了它們的用法,需要的朋友可以參考下
    2014-08-08
  • JQuery加載圖片自適應(yīng)固定大小的DIV

    JQuery加載圖片自適應(yīng)固定大小的DIV

    在固定大小的div中放置一個(gè)圖片,當(dāng)圖片較小時(shí)顯示實(shí)際大小,當(dāng)圖片超過(guò)div大小時(shí)圖片 自動(dòng)適應(yīng)div 的大小,實(shí)現(xiàn)思路如下,感興趣的朋友可以了解下
    2013-09-09
  • 基于wordpress的ajax寫(xiě)法詳解

    基于wordpress的ajax寫(xiě)法詳解

    下面小編就為大家分享一篇基于wordpress的ajax寫(xiě)法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • js/jquery遍歷對(duì)象和數(shù)組的方法分析【forEach,map與each方法】

    js/jquery遍歷對(duì)象和數(shù)組的方法分析【forEach,map與each方法】

    這篇文章主要介紹了js/jquery遍歷對(duì)象和數(shù)組的方法,結(jié)合實(shí)例形式分析了數(shù)組遍歷的forEach,map與each方法常見(jiàn)使用技巧,需要的朋友可以參考下
    2019-02-02
  • js讀取json文件片段中的數(shù)據(jù)實(shí)例

    js讀取json文件片段中的數(shù)據(jù)實(shí)例

    下面小編就為大家?guī)?lái)一篇js讀取json文件片段中的數(shù)據(jù)實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • JavaScript ES6中CLASS的使用詳解

    JavaScript ES6中CLASS的使用詳解

    class是es6引入的最重要特性之一。在沒(méi)有class之前,我們只能通過(guò)原型鏈來(lái)模擬類(lèi)。這篇文章我們將詳細(xì)的介紹關(guān)于ES6中CLASS的使用,有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-11-11
  • 詳解JavaScript對(duì)象序列化

    詳解JavaScript對(duì)象序列化

    這篇文章主要為大家介紹了JavaScript對(duì)象序列化的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • 原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名

    原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)隨機(jī)點(diǎn)名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 關(guān)于小程序優(yōu)化的一些建議(小結(jié))

    關(guān)于小程序優(yōu)化的一些建議(小結(jié))

    這篇文章主要介紹了關(guān)于小程序優(yōu)化的一些建議(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js中如何獲取JSON數(shù)組的長(zhǎng)度

    js中如何獲取JSON數(shù)組的長(zhǎng)度

    這篇文章主要介紹了js中如何獲取JSON數(shù)組的長(zhǎng)度問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論