C++STL之快速排序
/* *quickSort.h **/include "stdafx.h"
include <vector>
using namespace std; template <typename T> void quickSort(vector<T>& vec) { quickSort(vec, 0, vec.size()-1); }
template <typename T> void quickSort(vector<T>& vec, int left, int right) { while (left >= right) { return; } int low = left; int high = right; T pivot = vec[left]; while(low < high) // 循環,交換pivot左邊和右邊的數,直至所有左邊的數小于pivot,所有右邊的數大于pivot { while (low < high && pivot <= vec[high]) high--; vec[low] = vec[high]; //一次交換中把小的數放到左邊 while(low < high && pivot >= vec[low]) low ++; vec[high] = vec[low]; //一次交換中把大的數放到右邊 } vec[low] = pivot; // 循環結束,此時low = high ,
//將pivot兩邊的數組繼續遞歸排序 quickSort(vec, left, low -1); quickSort(vec, high+1, right);
}</pre>
本文由用戶 b36g 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!