快速排序
2016-03-15 19:43
197 查看
//快速排序 void QSort(int a[], int Low, int High) { if(Low > High) return; int Left = Low; int Right = High; int x = a[Low]; //以最左边一个作为枢纽元 while(Left < Right) { //从右向左找到第一个小于枢纽元的值,放到此时的left上 while(Left < Right && a[Right] >= x) --Right; a[Left] = a[Right]; //从左到右找到第一个大于枢纽元的,放到此时的right上 while(Left < Right && a[Left] <= x) ++Left; a[Right] = a[Left]; } a[Left] = x; //枢纽元放在left上 //整个while运行完后,枢纽元左边的都是比他小的,右边的都是比他大的,然后再分治 QSort(a, Low, Left-1); QSort(a, Left+1, High); }
相关文章推荐
- 优化的快速排序
- 聚内核与微内核
- 讲述一下runtime的概念,message send如果寻找不到相应的对象,会如何进行后续处理 ?
- 06 GPUImage滤镜效果
- Poj 2892 Tunnel Warfare
- HDU.1023 Train Problem II【大数除法、卡特兰数】--用于求出栈的n种方式(3.15)
- mac 安装 Maven
- Swift-2.8枚举
- Linux命令之ln
- Android图片缓存技术
- 查看运行中Linux的内核配置选项
- 日期匹配星座,月日匹配星座,android 星座
- jBPM--GPD中文乱码问题
- 【BZOJ1015】【tyvj3487】星球大战starwar,特别的并查集技巧
- 归并排序-nlogn
- 我的C语言之路2
- 最短路之dijkstra算法
- 2015搜狐在线笔试题(内存泄露问题)(转)
- 我在部署docker的时候遇到的坑
- RadioButton自定义样式及点击事件全解析