JS排序演算法
- 基礎排序
- 冒泡排序
- 選擇排序
- 面試題
基礎排序
今天學習了資料結構,遇到了一個關于演算法的面試題,然后從中想到了冒泡排序和選擇排序對一個陣列從小到大的排序的方法,今天分享給大家,順便記錄下我的學習經歷吧,
冒泡排序
要求:對陣列[6,3,8,2,9,1]進行從小到大的排序
想法:相鄰的兩個位置進行對比,如果大的那個換到右邊,小的那個換到左邊,上代碼!
var arr = [6,3,8,2,9,1];
var len = arr.length;
for(var i=0;i<arr.length;i++){
//len-1-i的意思是陣列最后那個的長度
for(var j=0;j<len-1-i;j++){
if(arr[j]>arr[j+1]){
var temp = arr[j];//因為arr[j]會被賦值,所有要先保存一下
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
選擇排序
要求:對陣列[49,27,65,97,76,12,38]進行從小到大的排序
想法:創建一個指標先指向第一位置,然后另一個指標掃后面所有的,找到最小的,跟第一個指標互換位置
var arr = [49,27,65,97,76,12,38];
var len = arr.length;
var pont = null;//設定一個指標
for(var i=0;i<arr.length;i++){
pont = i;//指標先指向第一個位置
for(var j=i+1;j<arr.length;j++){
if(arr[point] > arr[j]){
pont = j;
}
}
var temp = arr[i];
arr[i] = arr[point];
arr[point] = temp;
}
面試題
要求:把陣列[{‘brand’:‘可樂’,‘price’:3,‘year’:2021},{‘brand’:‘薯片’,‘price’:7,‘year’:2020},{‘brand’:‘朗姆酒’,‘price’:200,‘year’:1999},{‘brand’:‘薯條’,‘price’:7,‘year’:2021},{‘brand’:‘營養快線’,‘price’:5,‘year’:2021}] 安裝價格從小到大排序,如果價格一樣,價格按從大到小排序,
想法:用剛才的選擇排序來實作
var arr = [{'brand':'可樂','price':3,'year':2021},{'brand':'薯片','price':7,'year':2020},{'brand':'朗姆酒','price':200,'year':1999},{'brand':‘薯條’,'price':7,'year':2021},{'brand':‘營養快線’,'price':5,'year':2021}];
var len = arr.length;
var point = null;
for(var i=0; i<arr.length;i++){
point = i;
for(var j=i+1;j<arr.lenth;j++){
if(arr[pont]['price'] > arr[j]['price']){
point = j;
}else if(arr[point]['price'] > arr[j]['price'] && arr[point]['year'] < arr[j]['year']){
point = j;
}
}
var temp = arr[i];
arr[i] = arr[point];
arr[point] = temp;
}
這樣就實作了,題目要求的排序了,如果有喜歡前端的伙伴,可以關注我一下,我會每周不定期,分享前端的小知識點,一起學習進步,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/277688.html
標籤:其他
上一篇:事件委托(代理)
