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

歡迎訪問 生活随笔!

生活随笔

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

javascript

数组的合并和升序排列_JavaScript - 数组排序 6 种常见算法是什么?

發布時間:2025/3/15 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组的合并和升序排列_JavaScript - 数组排序 6 种常见算法是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

著急用的話,選擇前兩個就行了,后面的看看就好。

開發中,遇到數組排序的需求很頻繁,這篇文章會介紹幾個常見排序思路。

一、希爾排序(性能最好)

如果要從大到小排列,則 while(arr[n] > arr[n - interval] && n > 0) 。

// 希爾排序算法 function xier(arr){var interval = parseInt(arr.length / 2);//分組間隔設置while(interval > 0){for(var i = 0 ; i < arr.length ; i ++){var n = i;while(arr[n] < arr[n - interval] && n > 0){var temp = arr[n];arr[n] = arr[n - interval];arr[n - interval] = temp;n = n - interval;}}interval = parseInt(interval / 2);}return arr; }// Array var arr = [10, 20, 40, 60, 60, 0, 30]// 打印排序后的數組 console.log(xier(arr))//[0, 10, 20, 30, 40, 60, 60]

二、sort排序(普通數組 / 數組嵌套對象)

一堆數組排序// Array var arr = [10, 20, 40, 60, 60, 0, 30]// 排序方法 arr.sort(function(a,b){/** return b-a; —> 降序排序* return a-b; —> 升序排列*/return a-b; })//括號里不寫回調函數則默認按照字母逐位升序排列// 打印排序后的數組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60] 對象數組排序(數組套對象)//對象數組排序 var arr = [{name:'syy', age:0},{name:'wxy', age:18},{name:'slj', age:8},{name:'wj', age:20} ];// 排序方法 function compare(property) {//property:根據什么屬性排序return function(a,b){var value1 = a[property];var value2 = b[property];/** value2 - value1; ——> 降序* value1 - value2; ——> 升序*/return value1 - value2;//升序排序} }// 打印排序后的數組 console.log(arr.sort(compare('age'))) /* 0: {name: "syy", age: 0} 1: {name: "slj", age: 8} 2: {name: "wxy", age: 18} 3: {name: "wj", age: 20} */

三、桶排序

特點:簡單,但非常浪費內存,幾乎不用。

桶中出現的數組元素都做個標記 1,然后將桶數組中有 1 標記的元素依次打印。

// Array var arr = []// 每個數組項做標記(1) for(let i = 0; i < arr.length; i++) {let key = arr[i]arr[key] = 1 }// 遍歷打印出每項 for(let j in arr) {debuggerconsole.log(j) }

四、冒泡排序

性能:一般(需要每項進行比較)。

每一趟找出最大的值。

// Array var arr = [10, 20, 40, 60, 60, 0, 30]/* * 總共比較次數為arr.length-1次 * 每次的比較次數為arr.length-1次 * 依次遞減 */ var temp;//交換變量標識// 兩層for分別表示當前項與第二項 for(let i = 0; i < arr.length - 1; i++) {for(let j = 0; j < arr.length - 1; j++) {// 如果當前項大于第二項(后一項)則交換if(arr[j] > arr[j+1]) {temp = arr[j]arr[j] = arr[j+1];arr[j+1] = temp;}} }// 打印排序后的數組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]

五、選擇排序

性能:一般(需要每項進行比較)。

假定某個位置的值是最小值,與冒泡排序類似。

// Array var arr = [10, 20, 40, 60, 60, 0, 30]var temp;//交換變量標識// 兩層for分別表示當前項與第二項 for(let i = 0; i < arr.length - 1; i++) {for(let j = i + 1; j < arr.length; j++) {// 假設第二項是最小值(是則交換/否則繼續比較)if(arr[i] > arr[j]) {temp = arr[i];arr[i] = arr[j];arr[j] = temp;}} }// 打印排序后的數組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]

六、插入排序

// Array var arr = [10, 20, 40, 60, 60, 0, 30]// 排序算法 for(var i = 0; i < arr.length; i++) {var n = i;while(arr[n] > arr[n+1] && n >= 0) {var temp = arr[n];arr[n] = arr[n+1];arr[n+1] = temp;n--;} }// 打印排序后的數組 console.log(arr)//[0, 10, 20, 30, 40, 60, 60]

————————————————

版權聲明:本文為CSDN博主「王佳斌」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

原文鏈接:

JavaScript - 數組排序 6 種常見算法?blog.csdn.net

總結

以上是生活随笔為你收集整理的数组的合并和升序排列_JavaScript - 数组排序 6 种常见算法是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

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