QuickSort总结
来源:互联网 发布:淘宝企业店铺消失了 编辑:程序博客网 时间:2024/05/21 19:40
大致思路其实并不难, 先设立一个标准或称作轴(pivot),可以选择第一个元素或者中间的元素,我个人习惯是选择中间的元素,再建立两个指针i,j分别从最左边和最右边开始往中间走,直至左边的指针遇到第一个比pivot大的元素,左指针停下,右边的指针遇到第一个比pivot小的元素,右指针停下,判断如果"i <= j",则交换左右指针所指向的元素,再继续往中间走直至遇到走过(while(i <= j){...})。至此,第一遍结束。接下里divide的部分要注意,是分为“i ~ right”和“left ~ j”两部分。
代码如下:
class Solution_QuickSort{public: void quickSort(vector<int>& vec, int left, int right) { int i = left, j = right; int temp; int pivot = vec[(left + right) / 2]; while(i <= j) { while(vec[i] < pivot) { i++; } while(vec[j] > pivot) { j--; } if(i <= j) { temp = vec[i]; vec[i] = vec[j]; vec[j] = temp; i++; j--; } } if(left < j) { quickSort(vec, left, j); } if(i < right) { quickSort(vec, i, right); } }};
其实,比较容易出错的地方就是要分清楚哪里用小于号哪里用小于等于号。
阅读全文
0 0
- QuickSort总结
- Quicksort
- QuickSort
- quicksort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- QuickSort
- QuickSort
- QuickSort
- quicksort
- quicksort
- QuickSort
- 005
- 正则表达式(项目总结)
- String,StringBuffer与StringBuilder的区别??
- 甲骨文WDP华育兴业
- 服务器架设nodejs聊天服务
- QuickSort总结
- map的创建,插入和查找
- android 中activity的启动模式是singleTask时清除activity的栈顶activity的生命周期小计
- New Year Message by Singaporean Prime Minister Lee Hsien Loong
- 从B树、B+树、B*树谈到R 树
- Swift之缓存文件处理
- 《机器学习》基本术语标准翻译总结:第2章
- 设计模式之组合模式
- 工具类(一)-----微信工具类