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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

温故之 “快速排序”

發(fā)布時(shí)間:2024/10/12 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 温故之 “快速排序” 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

快速排序是對冒泡排序的一種改進(jìn),第一趟排序時(shí)將數(shù)據(jù)分成兩部分,一部分比另一部分的所有數(shù)據(jù)都要小。然后遞歸調(diào)用,在兩邊都實(shí)行快速排序。

快速排序的思想

  • 在數(shù)據(jù)集之中,選擇一個(gè)元素作為"基準(zhǔn)"(pivot)。
  • 所有小于"基準(zhǔn)"的元素,都移到"基準(zhǔn)"的左邊;所有大于"基準(zhǔn)"的元素,都移到"基準(zhǔn)"的右邊。
  • 對"基準(zhǔn)"左邊和右邊的兩個(gè)子集,不斷重復(fù)第一步和第二步,直到所有子集只剩下一個(gè)元素為止。
  • 舉例來說

    現(xiàn)在有一個(gè)數(shù)據(jù)集{85, 24, 63, 45, 17, 31, 96, 50}

  • 第一步,選擇中間的元素45作為"基準(zhǔn)"。(基準(zhǔn)值可以任意選擇,但是選擇中間的值比較容易理解。)
  • 第二步,按照順序,將每個(gè)元素與"基準(zhǔn)"進(jìn)行比較,形成兩個(gè)子集,一個(gè)"小于45",另一個(gè)"大于等于45"。
  • 第三步,對兩個(gè)子集不斷重復(fù)第一步和第二步,直到所有子集只剩下一個(gè)元素為止。
  • function quickSort(arr){if (arr.length <= 1){ return arr; } //如果數(shù)組<=1,則直接結(jié)束遞歸// 定義基準(zhǔn),并把基準(zhǔn)從原數(shù)組刪除var pivotIndex = Math.floor(arr.length / 2);var pivot=arr.splice(pivotIndex,1)[0];// 定義左右數(shù)組var left = [];var right = [];// 比基準(zhǔn)小的放在left,比基準(zhǔn)大的放在rightfor(var i=0; i < arr.length; i++){if(arr[i] <= pivot){left.push(arr[i]);}else{right.push(arr[i]);}}//遞歸,對左右兩個(gè)數(shù)組不停的按照基準(zhǔn)比較,知道子集都剩下一個(gè)為止return quickSort(left).concat([pivot],quickSort(right));}

    轉(zhuǎn)載于:https://www.cnblogs.com/whkl-m/p/10671855.html

    總結(jié)

    以上是生活随笔為你收集整理的温故之 “快速排序”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。