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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法 --- 希尔排序、归并排序、快速排序的js实现

發布時間:2023/12/10 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法 --- 希尔排序、归并排序、快速排序的js实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

希爾排序:

function shellSort(arr) {let len = arr.length;let temp, gap = 1;while(gap < len/3) {gap = gap*3 +1}while(gap >=1) {for(let i = gap;i< len; i++) {temp = arr[i];for( var j= i-gap; j>= 0 && arr[j] > temp; j -= gap) {arr[j + gap] = arr[j];}arr[j + gap] = temp;}gap = (gap -1 ) /3;}return arr } let arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; console.log(shellSort(arr));


歸并排序:

function mergeSort(arr){let len = arr.length;if(len < 2){return arr}let middle = Math.floor(len/2);let left = arr.slice(0, middle);let right = arr.slice(middle);return merge(mergeSort(left),mergeSort(right)) } function merge(left, right) {let results = [];while(left.length && right.length) {if(left[0] < right[0]){results.push(left.shift());} else{results.push(right.shift());}}while(left.length) {results.push(left.shift());}while(right.length) {results.push(right.shift());}return results; } var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; console.log(mergeSort(arr));

快速排序:

function qSort(arr) {if(arr.length == 0) {return []}let left = [];let right = [];let pivot = arr[0];for(let i =1;i< arr.length;i++) {if(arr[i] < pivot) {left.push(arr[i]);} else{right.push(arr[i]);}}return qSort(left).concat(pivot, qSort(right)); } var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48]; console.log(qSort(arr));

參考:https://github.com/zoro-web/blog/issues/4

總結

以上是生活随笔為你收集整理的算法 --- 希尔排序、归并排序、快速排序的js实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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