日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript 数组排序

發布時間:2024/4/17 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript 数组排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?javascript 數組排序

一、冒泡法排序

廢話不說 ?直接擼

function bubbleSort(arr){
for (let i=1;i<arr.length;i++){
for (let j=0;j<arr.length;j++){
//打印不排序的情況
console.log('arr['+i+']= ' + arr[i] + ' arr[' + j+']= ' + arr[j] );
if(arr[i]>arr[j]){
//一言不合就排序(對調兩個值)
let d=arr[j];
arr[j]=arr[i];
arr[i]=d;
//打印排序的情況
console.log('arr['+i+']= ' + arr[i] + ' arr[' + j+']= ' + arr[j] + ' 交換值');
}
//打印一下變換后的數組
console.log(arr);
}
}
return arr;
}
console.log(bubbleSort([9,5,6,4,1]));

看下輸出情況。。。

很清晰吧 從第二位開始每一位上的數組都和其他數字比較,大的就冒泡(換位到前面);

以下是看了前端早讀課后修改的(才發現上面方法不是正宗的....)

---------------------------------------------------------------------------------------------------------------------------

1 let arr1 = [3,5,6,4,1]; 2 class arrSort{ 3 bubbleSort(arr){ 4 let [len,i,j,] = [arr.length]; 5 for (i = 0; i < len - 1; i++) { 6 for (j = 0; j < len - 1 - i; j++) { 7 console.log('arr[' + j + ']= ' + arr[j] + ' arr[' + (j + 1) + ']= ' + arr[j + 1]); 8 if (arr[j] > arr[j + 1]) { 9 let temp = arr[j + 1]; 10 arr[j + 1] = arr[j]; 11 arr[j] = temp; 12 console.log('arr[' + j + ']= ' + arr[j] + ' arr[' + (j + 1) + ']= ' + rr[j + 1] + ' 交換值'); 13 } 14 console.log(arr); 15 } 16 } 17 return arr; 18 } 19 } 20 let arrSort1 = new arrSort; 21 console.log(arrSort1.bubbleSort(arr1));

?

看看輸出結果:

實現的思路:

? ? ? ? 1.依次比較相鄰的兩個數,如果第一個比第二個小,不變。如果第一個比第二個大,調換順序。一輪下來,最后一個是最大的數

? ? ? ? 2.對除了最后一個之外的數重復第一步,直到只剩一個數

?

相比之下后面的方法比較的次數少了好多...這才是正宗的冒泡法....

?

二、選擇法排序

實現的思路:

? ? ? ? 1.找出最小的數,和第一個交換位置

? ? ? ? 2.在余下的里面找最小的數,放在第二個位置

? ? ? ? 3.依次類推,排除順序

三、插入法排序

實現的思路:

? ? ? ? 1.依次比較相鄰的兩個數,如果第一個比第二個小,不變。如果第一個比第二個大,調換順序。一輪下來,最后一個是最大的數

? ? ? ? 2.對除了最后一個之外的數重復第一步,直到只剩一個數

四、快速排序

實現的思路:

? ? ? ? 1.依次比較相鄰的兩個數,如果第一個比第二個小,不變。如果第一個比第二個大,調換順序。一輪下來,最后一個是最大的數

? ? ? ? 2.對除了最后一個之外的數重復第一步,直到只剩一個數

?

?

五、對象數組排序

1 function by(property) { 2 return function (o,p) { 3 var a,b; 4 if(o && p && typeof o === 'object' && typeof p === 'object'){ 5 //這里是關鍵代碼 為a,b賦值,賦值分別為對象o、p的一個key! 6 a = o[property]; 7 b = p[property]; 8 9 if(a === b){ 10 return 0; 11 } 12 if(typeof a === typeof b){ 13 return a < b ? -1 :1; 14 } 15 return typeof a < typeof b ? -1 :1; 16 }else{ 17 throw('error'); 18 } 19 } 20 }

? ? 調用:someArray.sort(by(property));

轉載于:https://www.cnblogs.com/cdut007/p/7344862.html

總結

以上是生活随笔為你收集整理的javascript 数组排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。