C++STL之快速排序

b36g 9年前發布 | 2K 次閱讀 C/C++

/*
*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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!