JS排序之選擇排序詳解
本文為大家分享了JS選擇排序的具體代碼,供大家參考,具體內(nèi)容如下
說明
- 時間復(fù)雜度指的是一個算法執(zhí)行所耗費的時間
- 空間復(fù)雜度指運行完一個程序所需內(nèi)存的大小
- 穩(wěn)定指,如果a=b,a在b的前面,排序后a仍然在b的前面
- 不穩(wěn)定指,如果a=b,a在b的前面,排序后可能會交換位置
--JS選擇排序--
原理
首先從原始數(shù)組中找到最小的元素,并把該元素放在數(shù)組的最前面,然后再從剩下的元素中尋找最小的元素,放在之前最小元素的后面,知道排序完畢。
時間復(fù)雜度,空間復(fù)雜度,穩(wěn)定性
- 平均時間復(fù)雜度O(n*n)
- 最好情況O(n*n)
- 最差情況O(n*n)
- 空間復(fù)雜度O(1)
- 穩(wěn)定性:不穩(wěn)定
選擇排序的寫法
var example=[8,94,15,88,55,76,21,39]; function selectSort(arr){ var len=arr.length; var minIndex,temp; console.time('選擇排序耗時'); for(i=0;i<len-1;i++){ minIndex=i; for(j=i+1;j<len;j++){ if(arr[j]<arr[minIndex]){ minIndex=j; } } temp=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=temp; } console.timeEnd('選擇排序耗時'); return arr; } console.log(selectSort(example));
解析
minIndex始終保存著最小值的位置的索引,隨著i的自增,遍歷的數(shù)組長度越來越短,直到完成排序。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JavaScript實現(xiàn)經(jīng)典排序算法之選擇排序
- JavaScript 冒泡排序和選擇排序的實現(xiàn)代碼
- 基于JavaScript實現(xiàn)的快速排序算法分析
- 基于JavaScript實現(xiàn)的希爾排序算法分析
- 基于JavaScript實現(xiàn)的插入排序算法分析
- JavaScript實現(xiàn)經(jīng)典排序算法之插入排序
- JavaScript實現(xiàn)經(jīng)典排序算法之冒泡排序
- Javascript中的常見排序算法
- js算法中的排序、數(shù)組去重詳細概述
- JavaScript中幾種常見排序算法小結(jié)
- javascript快速排序算法詳解
- JavaScript實現(xiàn)的選擇排序算法實例分析
相關(guān)文章
JS使用replace()方法和正則表達式進行字符串的搜索與替換實例
這篇文章主要介紹了JS使用replace()方法和正則表達式進行字符串的搜索與替換實例,需要的朋友可以參考下2014-04-04js數(shù)組相減簡單示例【刪除a數(shù)組所有與b數(shù)組相同元素】
這篇文章主要介紹了js數(shù)組相減,結(jié)合簡單示例形式分析了JavaScript刪除a數(shù)組所有與b數(shù)組相同元素相關(guān)個遍歷、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下2020-03-03javascript實現(xiàn)Emrips反質(zhì)數(shù)枚舉的示例代碼
下面小編就為大家分享一篇javascript實現(xiàn)Emrips反質(zhì)數(shù)枚舉的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-12-12JS實現(xiàn)移動端可折疊導(dǎo)航菜單(現(xiàn)代都市風(fēng))
這篇文章主要介紹了JS如何實現(xiàn)移動端可折疊導(dǎo)航菜單,文中示例代碼非常詳細,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07