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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

快速排序 C++

發(fā)布時(shí)間:2025/3/21 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 快速排序 C++ 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

根據(jù)算法導(dǎo)論上的流程,將數(shù)組最后一個(gè)數(shù)作為主元,i和j都是從start往end移動(dòng)。

void QuickSort(T*source,size_t length){if(!source){return;}QSort(source,0,length-1); } template<typename T> void Qsort(T*source,size_t start,size_t end){if(start<end){int pivot = Partition(source,start,end);Qsort(source,start,pivot-1);Qsort(source,pivot+1,end);} } template<typename T> size_t Partition( T*source, int start, int end ){if(start>end || !source){throw std::runtime_error("Invalid Input");}//T temp = source[start];size_t i = start-1;for(size_t j = start;j<end;j++){if(source[j]<=source[end]){i++;swap(source[j],source[i]);}}swap(source[i+1],source[end]);return i+1; }

如果,需要記錄原數(shù)組的位置標(biāo)記。下面的程序已數(shù)組的第一個(gè)為主元,i從start往后指示第一個(gè)大于主元的位置,j從end往前指示第一個(gè)小于主元的位置,每次交換數(shù)組的兩個(gè)位置的數(shù)據(jù),id記錄數(shù)組當(dāng)前的數(shù)據(jù)是未排序前數(shù)組的哪一項(xiàng)。

template <typename T> void QuickSort( T*source, size_t* id, size_t length ) {if(!source || length < 2)return;QSort( source, id, 0, length -1); }template <typename T> void QSort( T*source, size_t* id, int start, int end ) {if(start < end){int pivot = Partition(source, id, start, end);QSort(source, id, start, pivot-1);QSort(source, id, pivot+1, end);} } template <typename T> size_t Partition( T*source, size_t* id, int start, int end ) {if(start > end || !source)throw std::runtime_error("Invalid Input");T temp = source[start];size_t tmpID = id[start];while(start < end){while(start < end && source[end] >= temp)end--;source[start] = source[end];id[start] = id[end];while(start < end && source[start] <= temp)start++;source[end] = source[start];id[end] = id[start];}source[start] = temp;id[start] = tmpID;return start; }


?


總結(jié)

以上是生活随笔為你收集整理的快速排序 C++的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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