快速排序的C++ 实现
来源:互联网 发布:指纹膜 淘宝 编辑:程序博客网 时间:2024/06/09 22:54
class Solution {public: // 入口程序 void quickSort(vector<int> &vec) { int L = 0; int R = vec.size()-1; int *pVec = &vec[0]; QuitSort(pVec, L, R); } int getPartion(int *array, int low, int high) { int key = array[low]; while (low < high) { while (low < high && key <= array[high]) //如果array[high]大于键值,那么本就应该在键值右边 high--; //因此将high下标向前移动,直至找到比键值小的值,此时交换这两个值 swap(array[low], array[high]); while (low < high && key >= array[low]) low++; swap(array[low], array[high]); } return low;//返回key值的下标 } void QuitSort(int *buf,int low,int high) { if (low < high) { int key = getPartion(buf, low, high); QuitSort(buf, low, key - 1); QuitSort(buf, key + 1, high); } } void swap(int &val1, int &val2) { int temp = val1; val1 = val2; val2 = temp; }};int main() { Solution solution; int arr[] = {254,78,268,6,34,876,34,9,345,87,23874,2346};// int arr[] = {3,2,1}; vector<int> vec(begin(arr), end(arr)); solution.quickSort(vec); disp_vec(vec); return 0;}
阅读全文