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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

快速排序和堆排序

發布時間:2025/3/21 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序和堆排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在刷遞歸但是老是要用到這兩個排序,然后自己還老是忘,所以干脆放在這方便回顧。

快速排序

int getStandard(auto& array, int i, int j) {int key = array[i];while (i < j) {while (i < j && array[j] >= key) {j--;}if (i < j) {array[i] = array[j];}while (i < j && array[i] <= key) {i++;}if (i < j) {array[j] = array[i];}}array[i] = key;return i; }void QuickSort(auto& array, int low, int high) {if (low < high) {int standard = getStandard(array, low, high);QuickSort(array, low, standard - 1);QuickSort(array, standard + 1, high);} }int main() {int arr[]={3,4,2,5,7,9};vector<int> array(arr,arr+6);int size =array.size();QuickSort(array, 0, size - 1);for(int i:array){cout<<i;}return 0; }

堆排序

void max_heap(auto& vec,int start,int end){int dad = start;int son = dad * 2 + 1;while (son <= end) { if (son + 1 <= end && vec[son] < vec[son + 1])son++;if (vec[dad] > vec[son]) return;else{swap(vec[dad], vec[son]);dad = son;son = dad * 2 + 1;}}}void build_heap(auto& vec){int size=vec.size();for(int i=size/2-1;i>=0;i--){max_heap(vec,i,size-1);}for(int i=size-1;i>0;i--){swap(vec[i],vec[0]);max_heap(vec,0,i-1); } }int main(){int arr[]={3,2,4,7,6,1};vector<int>vec(arr,arr+6);build_heap(vec);for(int i:vec){cout<<i;} }

總結

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

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