JS中的冒泡排序與選擇排序


1.冒泡排序

作為最簡單的排序算法之一,冒泡排序的思想是,從左到右依次比較兩個存儲數據的大小,如果第一個數大於第二個數,就交換兩個數據,這樣一輪比較之后,最大的數會放在后面,這樣,每次循環比較,本輪中的最大值都會排到最后,直到循環結束,實現數組升序。

動圖演示如下:

 

代碼如下:

 

首先定義外層循環,如果有n個數據進行循環比較,最后一次循環排序,最后兩個值的大小已經確定,所以最后一個數值不需要參與循環,即n-1次,這里就是(arr.length-1) -1次;

定義內層循環,當前位i和i+1進行比較,當前循環的最后一位,只需要通過跟前一位比較即可,不需要參與循環,次數減1,而且每循環1次,排出的最大值都不需要再參與下次的循環,循環j次,可以排列出j個數,所以內循環循環的次數為(arr.length-1) -1 - j;若當前位數據大於下一位,即交換數據,用if判斷。最后控制台輸出查看。

 

2.選擇排序

選擇排序,是從起始位置開始,找最小的數值所在的索引,如果最終存儲的索引不是起始位置,就與起始位置交換存儲數據,每執行一次循環,會將最小值存儲在起始位置上。

動圖演示如下:

 
 
代碼如下:
 

 

 

同樣,先定義外層循環,實現排序循環次數,次數是單元個數 -1,即arr.length-1 -1;

定義內層循環,先默認起始位置就是最小值位置,存儲起始位置的索引,也就是arr.length-1;用if進行數據大小的判斷,若j>j+1,則存儲j+1位的索引,即min=i;最后通過判斷存儲的索引如果不是最開始存儲的j,則交換存儲的數據。

 

冒泡排序和選擇排序是排序算法的其中兩種。

在執行上,冒泡排序,每發生一次大小順序問題,就交換一次數據;選擇排序發生大小問題時,只是做賦值索引的操作,循環結束,才發生一次交換數據的操作。

冒泡排序執行數據交換的操作比較繁瑣,執行效率低於選擇排序。

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM