溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用JavaScript怎么實現(xiàn)一個選擇排序算法

發(fā)布時間:2021-04-09 17:45:01 來源:億速云 閱讀:128 作者:Leah 欄目:web開發(fā)

利用JavaScript怎么實現(xiàn)一個選擇排序算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

一、選擇排序簡介

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

假設(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]號位!

第二輪:

重復(fù)第一輪的過程,只不過這次是從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),因而相當(dāng)于沒有進行任何操作,結(jié)果也是正確的。

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

利用JavaScript怎么實現(xiàn)一個選擇排序算法

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI