算法题13 排序算法(更新快排)
来源:互联网 发布:为什么江老是被黑 知乎 编辑:程序博客网 时间:2024/05/22 04:27
1 快速排序
http://blog.csdn.net/morewindows/article/details/6684558 这篇博客介绍的非常清晰易懂了。主要就是挖坑,填坑+分治法策略。笔者这里就只贴出代码来
1 void QuickSortCore(int arr[],int start,int end) 2 { 3 int i=start,j=end; 4 //以起点为基准值,先挖一个坑,需要用一个比x小的值来填i坑 5 int x=arr[i]; 6 while (i<j) 7 { 8 //从后向前寻找比x小的值 9 while (i<j&&arr[j]>=x)10 {11 j--;12 }13 //填i的坑,等于挖了j的元素到i,需要一个比x大的数来填j的坑14 if (i<j)15 {16 arr[i++]=arr[j];17 }18 19 //从前向后寻找比x大的值20 while (j>i&&arr[i]<x)21 {22 i++;23 }24 //填j的坑,等于挖了i的元素到j,需要一个比x大的数来填i的坑25 if (i<j)26 {27 arr[j--]=arr[i];28 }29 30 }31 //基准值调整到中间,一趟快排以后使得x前面的数都小于x,x后面的数都大于等于x32 arr[i]=x;33 34 if (start<(i-1))35 {36 QuickSortCore(arr,start,i-1);37 }38 if (end>(i+1))39 {40 QuickSortCore(arr,i+1,end);41 }42 43 }44 45 void QuickSort(int arr[],int len)46 {47 if (arr==NULL||len<=0)48 throw std::exception("Invalid input.");49 50 int reserve_num=0;51 QuickSortCore(arr,0,len-1);52 53 for (int i=0;i<len;i++)54 {55 cout<<arr[i]<<' ';56 }57 cout<<endl;58 }
0 0
- 算法题13 排序算法(更新快排)
- 排序算法--快排
- 算法 排序 快排
- 算法--排序--快排
- 排序算法(快排,希尔排序)
- 算法—排序(快排,冒泡)
- 一、排序算法 快排
- 快速排序算法(快排)
- [算法]快排-快速排序
- 排序算法之快排
- 排序算法之快排
- 排序算法之快排
- 排序算法之快排
- 排序算法之快排
- 排序算法之快排
- 排序算法(堆排序,归并排序,快排)
- 排序算法之交换排序(冒泡和快排)
- 编程算法总结(冒泡排序,选择排序,快排)
- Android 中 onTouch 和OnClick 冲突的处理(onTouchEvent返回true时与onclick冲突)
- 算法题11 字符串的所有对称子串
- CodeForces 622C Not Equal on a Segment
- 算法题12 数组中所有的逆序对
- Android设计模式系列(2)--SDK源码之观察者模式
- 算法题13 排序算法(更新快排)
- iOS单元测试
- 算法题14 最低公共祖先
- 数据仓库专题20-案例篇:电商领域数据主题域模型设计v0.1(改进意见征集中)
- android 反编译
- android触摸事件传递
- 在 Web 项目中应用 Apache Shiro
- 算法题15 二叉树的最长的路径长度&&最大路径和
- 算法题16 二分查找及相关题目