快速排序
来源:互联网 发布:卡密软件破解 编辑:程序博客网 时间:2024/06/16 16:02
快速排序
基本思想:找到一个合适的位置,对于k而言。它的左边的所有元素均比他小,右边的元素均比他大。
如何做到?
遍历数组,为方便直接设置k就是起始的那个元素,设置两个指针分别在头和尾,
如果进行偶数次交换(0算偶数次)那就让a[j]和k比,奇数次那就让a[i]和k比。
#include <iostream>using namespace std;void Swap(int & a, int & b){ int tmp; tmp = a; a = b; b = tmp;}void QuickSort(int a[], int s, int e){ int k = a[s]; int i = s, j = e; if(s >= e) return; while(i != j)//交换的目的是为了让k左边的元素小于k,k右边的元素大于k { while(i<j && a[j]>=k)//偶数次交换 j--; Swap(a[i], a[j]); while(i<j && a[i]<=k)//奇数次交换 i++; Swap(a[i], a[j]); } QuickSort(a, s, i-1);//k左边排 QuickSort(a, i+1, e);//k右边排}//完了之后a[i] == kint a[] = { 93,27,30,2,8,12,2,8,30,89};int main(){ int size = sizeof(a) / sizeof(int); QuickSort(a, 0, size-1); for(int i=0; i<size; i++) cout << a[i] << ","; cout << endl; return 0;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 如何让存储到数据库的数据是完整的?
- VS使用技巧(快捷键)
- WIN32 下读取excel文档
- meta-http 属性详情
- ArcGIS Python API 与R语言混合编程实现分析及可视化
- 快速排序
- arcgis for android 和百度地图共同使用出现的问题
- Linux监控工具vmstat命令详解
- shell 脚本中字符的自增
- 两分钟配置yum源&&yum命令详解
- Android--UI
- css3实现圆环加载进度条动画
- Android studio 使用技巧(快捷键)
- 2017年校招全国统一模拟笔试(第一场)编程题集合——连续整数