最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

一、選擇排序簡介

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

假設有一個數(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),因而相當于沒有進行任何操作,結果也是正確的。

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

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

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

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

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

相關文章

  • 超詳細JavaScript深淺拷貝的實現(xiàn)教程

    超詳細JavaScript深淺拷貝的實現(xiàn)教程

    淺拷貝是指,一個新的對象對原始對象的屬性值進行精確地拷貝;深拷貝是指,對于簡單數(shù)據(jù)類型直接拷貝他的值,對于引用數(shù)據(jù)類型,在堆內(nèi)存中開辟一塊內(nèi)存用于存放復制的對象,并把原有的對象類型數(shù)據(jù)拷貝過來。本文將實現(xiàn)JavaScript深淺拷貝,需要的可以參考一下
    2022-09-09
  • JavaScript獲取數(shù)組最后一個元素的3種方法以及性能

    JavaScript獲取數(shù)組最后一個元素的3種方法以及性能

    在開發(fā)過程中,我們常常需要得到js數(shù)組的最后一個數(shù)組元素,下面這篇文章主要給大家介紹了關于JavaScript獲取數(shù)組最后一個元素的3種方法以及性能,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-06-06
  • Javascript attachEvent傳遞參數(shù)的辦法

    Javascript attachEvent傳遞參數(shù)的辦法

    找了半天找到的解決辦法,看介紹說是javascript的閉包問題,導致得不能直接讀取外部的那個函數(shù),不然就所有傳遞的參數(shù)都變?yōu)樽詈笠粋€了。
    2009-12-12
  • JS中的數(shù)組的some()方法示例解析

    JS中的數(shù)組的some()方法示例解析

    some()方法用于檢測數(shù)組中的元素是否滿足指定條件函數(shù)提供,這篇文章主要介紹了JS中的數(shù)組的some()方法示例解析,需要的朋友可以參考下
    2025-04-04
  • 微信小程序?qū)崿F(xiàn)計時器開始和結束功能

    微信小程序?qū)崿F(xiàn)計時器開始和結束功能

    這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)計時器開始和結束功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • javascript實現(xiàn)下班倒計時效果的方法(可桌面通知)

    javascript實現(xiàn)下班倒計時效果的方法(可桌面通知)

    這篇文章主要介紹了javascript實現(xiàn)下班倒計時效果的方法,涉及javascript倒計時效果及桌面提示效果的實現(xiàn)技巧,具有一定參考借鑒價值
    2015-07-07
  • JS選中checkbox后獲取table內(nèi)一行TD所有數(shù)據(jù)的方法

    JS選中checkbox后獲取table內(nèi)一行TD所有數(shù)據(jù)的方法

    這篇文章主要介紹了JS選中checkbox后獲取table內(nèi)一行TD所有數(shù)據(jù)的方法,涉及javascript針對table元素遍歷與獲取的技巧,需要的朋友可以參考下
    2015-07-07
  • js實現(xiàn)的在線調(diào)色板功能完整實例

    js實現(xiàn)的在線調(diào)色板功能完整實例

    這篇文章主要介紹了js實現(xiàn)的在線調(diào)色板功能,結合完整實例形式分析了調(diào)色板的完整實現(xiàn)步驟與相關操作技巧,需要的朋友可以參考下
    2016-12-12
  • 原生js自定義右鍵菜單

    原生js自定義右鍵菜單

    這篇文章主要為大家詳細介紹了原生js自定義右鍵菜單,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于js實現(xiàn)二級下拉聯(lián)動

    基于js實現(xiàn)二級下拉聯(lián)動

    這篇文章主要為大家詳細介紹了基于js實現(xiàn)二級下拉聯(lián)動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評論

新化县| 清水河县| 麦盖提县| 长丰县| 沾益县| 陇西县| 安多县| 那坡县| 泰顺县| 玉溪市| 西青区| 龙岩市| 彰化县| 磐安县| 洪江市| 西畴县| 湘西| 磐安县| 微山县| 洛川县| 桂阳县| 钟山县| 伊宁县| 沛县| 通州市| 夏津县| 汉寿县| 自治县| 阜新| 沁源县| 阿克苏市| 五寨县| 大厂| 仪陇县| 松阳县| 靖远县| 松桃| 成都市| 彭泽县| 射阳县| 永川市|