自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JavaScript冒泡排序與選擇排序

開發(fā) 前端
算法與數(shù)據(jù)結(jié)構(gòu)構(gòu)成了程序,數(shù)據(jù)結(jié)構(gòu)用于實現(xiàn)數(shù)據(jù)的表示、存儲、管理,算法通過使用數(shù)據(jù)完成一定的業(yè)務(wù)邏輯與操作,最終實現(xiàn)了程序的功能。因此算法在編程中的重要性是不言而喻的。

 算法與數(shù)據(jù)結(jié)構(gòu)構(gòu)成了程序,數(shù)據(jù)結(jié)構(gòu)用于實現(xiàn)數(shù)據(jù)的表示、存儲、管理,算法通過使用數(shù)據(jù)完成一定的業(yè)務(wù)邏輯與操作,最終實現(xiàn)了程序的功能。因此算法在編程中的重要性是不言而喻的。很多復(fù)雜的算法都是借助最基本的算法實現(xiàn)的。本文主要選取經(jīng)典排序算法中的冒泡排序與選擇排序?qū)avaScript編程實現(xiàn)算法進(jìn)行簡單描述與說明。

[[280725]]

算法說明

算法(Algorithm)是解決問題的一種策略機制,算法也是有限操作指令的集合。按照算法策略輸入符合要求的數(shù)據(jù),最終獲得解決問題的輸出結(jié)果。冒泡算法與選擇算法主要用于實現(xiàn)對無序的數(shù)字集合進(jìn)行排序。算法描述分別如下:

1、冒泡排序算法

冒泡算法顧名思義,可以將待排序序列中的每一個元素看成一個個氣泡,假設(shè)氣泡的大小用元素的數(shù)值表示,這樣的話最大氣泡(最大的元素數(shù)字)會最先升起來,這一過程即為冒泡。冒泡算法的關(guān)鍵在于將未排序部分最大元素依次后移動,在序列尾端從小到大形成排序好的有序序列。冒泡排序示意如下圖所示:

 

算法學(xué)習(xí)-JavaScript冒泡排序與選擇排序

 

冒泡排序算法示意圖

冒泡排序算法示意圖如上圖所示,其中每一行表示一次排序,排序目的找到最大值,從待排序序列中取出最大值,放到紅色小球區(qū)域中,紅色小球區(qū)域表示已完成排序的序列。通過上圖我們可以看出,每趟排序冒泡出來的元素分別為(17,12,9,5,1)。最終排好的序列為(1,5,9,12,17)。

2、選擇排序算法

選擇排序是指從未排序的序列中找到最小的值并取出放到已經(jīng)排好順序的序列中,一直到未排序序列中的元素個數(shù)為零。即所有的元素都放到已經(jīng)排好順序的序列中。該算法的關(guān)鍵在于從未排序的序列中找到最輕(數(shù)值最小)元素,放到已經(jīng)排序好的序列中。選擇排序算法示意如下圖所示:

 

算法學(xué)習(xí)-JavaScript冒泡排序與選擇排序

 

選擇排序示意圖

選擇排序示意圖如上圖所示,選擇的關(guān)鍵在于找到最小的值,并將其放到已經(jīng)排序好的序列中。上圖中未排序(待排序)集合為黃色部分,排序好的部分為綠色背景部分,每一行為一次排序,排序目的找到最小元素。通過上圖可知選擇出來的最小值依次為(1,5,9,12,17)。

冒泡排序?qū)崿F(xiàn)

JavaScript冒泡排序主要借助JavaScript array數(shù)字對象實現(xiàn)待排序序列的存儲,通過循環(huán)語句遍歷數(shù)組,從待排序序列的第一個元素開始與后面元素比較,如大于后面元素則交換,因此經(jīng)過一趟遍歷,最大元素將會跑到array數(shù)組的末尾。實現(xiàn)代碼描述如下:

  1. var arr1=[9,1,4,13,7,8,20,23,15];  
  2. var wlen1=arr1.length; 
  3. var count1=0;//記錄總執(zhí)行次數(shù)  
  4. for(var i=0;i<arr1.length-1;i++) {  
  5. for(var j=0;j<wlen1;j++) {  
  6. if(arr1[j]>arr1[j+1]) {  
  7. var temp;  
  8. temp=arr1[j];  
  9. arr1[j]=arr1[j+1];  
  10. arr1[j+1]=temp;  
  11. count1++;  
  12. }  
  13. }  
  14. wlen1=wlen1-1;  

選擇排序?qū)崿F(xiàn)

按照算法描述選擇排序需要使用兩個JavaScript數(shù)組對象,一個為待排序序列存儲數(shù)據(jù),一個為排序完成數(shù)組。分別從待排序序列數(shù)組中找到最小值并取出存儲到完成排序數(shù)組中。arr數(shù)組為待排序數(shù)組,res數(shù)組為排序完成數(shù)組。使用javaScript實現(xiàn)選擇排序代碼描述如下:

  1. var arr=[9,1,4,13,7,8,20,23,15];  
  2.  var wlen=arr.length;  
  3.  var count=0;//記錄已完成排序元素數(shù)量  
  4.  var res=[];//最終排序結(jié)果數(shù)組  
  5.  var minvalue=0; //思路從未排序序列選擇最小元素放到已經(jīng)完成排序的數(shù)組中  
  6.  for(var i=0;i<wlen;i++) { //找到最小元素  
  7.  minvalue=arr[0];  
  8.  for(var j=0;j<arr.length;j++) {  
  9.  if(minvalue>arr[j]) {  
  10.  minvalue=arr[j];  
  11.  var temp;  
  12.  temp=arr[0];  
  13.  arr[0]=arr[j];  
  14.  arr[j]=temp;  
  15.  }  
  16.  count++;  
  17.  }  
  18.  arr.shift();  
  19.  res[i]=minvalue;  
  20.  } 

JavaScript實現(xiàn)基本冒泡與選擇排序算法描述如上所示,本例設(shè)計測試用例為(9,1,4,13,7,8,20,23,15),該待排序測試用例分別執(zhí)行冒泡排序與選擇排序,效果展示如下圖

 

算法學(xué)習(xí)-JavaScript冒泡排序與選擇排序

 

冒泡排序與選擇測試結(jié)果

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-03-06 08:10:52

數(shù)據(jù)結(jié)構(gòu)算法數(shù)據(jù)

2017-03-25 21:13:38

JavaScript排序

2022-11-21 07:58:10

Java排序冒泡排序

2021-01-21 05:22:36

排序算法選擇

2012-10-31 10:25:52

排序

2011-04-20 14:07:37

冒泡排序

2023-03-02 08:15:13

2020-07-05 09:12:42

java冒泡排序算法

2009-09-10 16:30:11

C#排序函數(shù)

2009-12-11 16:44:33

PHP冒泡排序

2015-10-20 15:09:55

排序算法

2011-04-20 13:56:08

選擇排序

2009-08-10 16:19:37

C#冒泡排序

2018-11-21 10:47:46

排序算法TimsortPython

2023-10-04 00:02:00

本文將從入門到精通,冒泡排序

2009-09-02 17:16:01

冒泡排序

2023-09-26 22:22:30

選擇排序Python

2010-01-11 15:01:55

VB.NET冒泡排序

2021-10-14 08:58:48

Java冒泡排序

2010-02-06 16:16:01

C++冒泡排序
點贊
收藏

51CTO技術(shù)棧公眾號