浅谈快速排序
来源:互联网 发布:php soap添加header 编辑:程序博客网 时间:2024/04/20 11:31
·快速排序的思想
1.在数组中的低位到高位中取一个基准数(一般是直接取低位或者是高位,而不取低位和高位之间的位置),然后根据索引把数组里的元素依次与基准数来比较,比基准数小的扔一边,比基准数大的扔一边
2.在数组左边执行第1步操作。
3.在数组的右边执行第1步操作。
我们可以看到,上面的流程是递归的套路。
快速排序最坏的时间复杂度是:O(n2),平均时间复杂度是:O(n*log2n)
·快速排序的代码实现
#include <iostream>using namespace std;#define N 10void swap(int arr[N],int i,int j){ int t=arr[i]; arr[i]=arr[j]; arr[j]=t;}/*** 在low到high的范围内,以high位置的数为基准,把比它小的数移到它左边,把比它大的数移到右边*/int aSort(int arr[N],int low,int high){ int base=arr[high];//以高位为基准 while(low<high) { while(low<high&&arr[low]<=base)//从左往右找比基准小的 { low++; } swap(arr,low,high); while(low<high&&arr[high]>=base)//从右往左找比基准大的 { high--; } swap(arr,low,high); } //到这里low==high return low;}void quickSort(int arr[N],int low,int high){ if(low<high){ int pos=aSort(arr,low,high); quickSort(arr,low,pos-1); quickSort(arr,pos+1,high); }}int main(){ int arr[N]={5,1,2,3,4,6,7,8,8,9}; quickSort(arr,0,N-1); for(int i=0;i<N;i++) { cout<<arr[i]<<" "; } return 0;}
0 0
- 浅谈快速排序算法
- 浅谈单链表快速排序
- 浅谈快速排序
- 浅谈快速排序
- 浅谈快速排序
- 浅谈快速排序
- 浅谈快速排序
- 浅谈快速排序
- 黑马程序员--浅谈快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 浅谈算法和数据结构: 四 快速排序
- 仿淘宝京东拖拽商品详情页上下滚动黏滞效果
- oracle使用substr instr实现类似于java substring的功能
- gym 101196E Red Rover(枚举)
- 对视图的对角线切割DiagonalView
- Oralce 函数
- 浅谈快速排序
- UVa 1103
- 动态主题库Colorful,容易地改变App的配色方案
- E
- Activity的启动模式和onNewIntent
- 域名绑定空间
- 利用广播实现强制下线功能
- Android 从网页中跳转到本地App
- No.7_6 OpenCL 同步——异步拷贝