快速排序
来源:互联网 发布:2016网络十大神曲 编辑:程序博客网 时间:2024/06/06 03:03
快速排序
void print(int a[], int n){
for(intj= 0; j<n; j++){
cout<<a[j]<<" ";
}
cout<<endl;
}
void swap(int *a, int *b)
{
inttmp = *a;
*a= *b;
*b= tmp;
}
int partition(int a[], int low, int high)
{
intprivotKey = a[low]; //基准元素
while(low< high){ //从表的两端交替地向中间扫描
while(low< high && a[high] >=privotKey) --high; //从high 所指位置向前搜索,至多到low+1 位置。将比基准元素小的交换到低端
swap(&a[low], &a[high]);
while(low< high && a[low] <=privotKey ) ++low;
swap(&a[low],&a[high]);
}
print(a,10);
returnlow;
}
void qsort_improve(int r[ ],int low,inthigh, int k){
if(high -low > k ) { //长度大于k时递归,k为指定的数
intpivot = partition(r, low, high); // 调用的Partition算法保持不变
qsort_improve(r,low, pivot - 1,k);
qsort_improve(r,pivot + 1, high,k);
}
}
void quickSort(int r[], int n, int k){
qsort_improve(r,0,n,k);//先调用改进算法Qsort使之基本有序
//再用插入排序对基本有序序列排序
for(inti=1; i<=n;i ++){
inttmp = r[i];
intj=i-1;
while(tmp< r[j]){
r[j+1]=r[j];j=j-1;
}
r[j+1]= tmp;
}
}
int main(){
inta[10] = {3,1,5,7,2,4,9,6,10,8};
cout<<"初始值:";
print(a,10);
quickSort(a,9,4);
cout<<"结果:";
print(a,10);
}
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Android开发-03 生命周期
- 【Mysql】Linux(Ubuntu)下安装Mysql5.7
- Sublime Text 神级代码编辑器,常用快捷键使用指南,附Gif动图
- redis代码连接服务器
- 应用宝配置的流程
- 快速排序
- 2017寒假集训-小题训练1:E - Seating On Bus
- centos7安装mongodb3.4
- opencv学习笔记(二十四)霍夫线变换
- OC学习之深入c ——结构体
- 第四十四篇:重写U-BOOT中的xHCI host代码
- 关于mysqldump导出多个库:mysqldump: Couldn't execute 'show table status like '。 ...
- IOS代码重构(一)目录结构调整
- hdu1995 汉诺塔V