快速排序
来源:互联网 发布:怎么看淘宝商品的类目 编辑:程序博客网 时间:2024/05/18 00:44
要求根据给定输入,按照课堂给定的快速排序算法进行排序,输出排序结果和median3的返回值。
注:1,cutoff值为5,不足cutoff使用插入排序。
2,输入、输出格式参见测试用例0。
测试输入
411734019#
测试输入
After Sorting:0 17 19 34 41 Median3 Value:none
源代码
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include <iostream> using namespace std; #define EQ(a,b) ((a) == (b)) #define LT(a,b) ((a) < (b)) #define LQ(a,b) ((a) <= (b)) #define MAXSIZE 1000 int a[MAXSIZE],y=0; void Median3(int map[], int p, int q ) //取前中后三个元素,然后最小的放在最前,最大的放在最后,中值放在最大的左边。 { int c = ( p + q ) / 2; if( map[p] > map[c] ){ swap<int>(map[p], map[c]); } if( map[p] > map[q] ){ swap<int>(map[p], map[q]); } if( map[c] > map[q] ){ swap<int>(map[c], map[q]); } swap<int>(map[c],map[q-1]); a[y++]=map[q-1]; } void Insort(int num[],int i,int j){ // 一趟划分,采用三者取中值作主元 int k; for(i=2;i<=j;i++){ num[0]=num[i]; k=i-1; while(num[0]<num[k]){ //从零开始,则应防止数组下标越界,(不用0时,则必定不会越界,在0时,跳出) num[k+1]=num[k]; k=k-1; } num[k+1]=num[0]; } } void QKsort(int num[],int low,int high) { int i,j,temp; Median3(num,low,high); i=low; //一定要从low开始,low+1的话与中值交换的下标不对。 j=high-1; int x = num[j]; while(1){ while(num[++i]<x){ } while(num[--j]>x){ } if(i<j){ temp=num[i]; num[i]=num[j]; num[j]=temp; } else break; } num[high-1]=num[i]; //将中值放在中间。 num[i]=x; if(low+5<=i) QKsort(num,low,i-1); else Insort(num,low,i-1); if(i+5<=high) QKsort(num,i+1,high); else Insort(num,i+1,high); } int main(){ int num[MAXSIZE]; int i=1,j=1,k=0; while((scanf("%d",&num[i])==1)){ getchar(); i++; } if(i>6) QKsort(num,1,i-1); else Insort(num,1,i-1); printf("After Sorting:\n"); while(j<i) { printf("%d ",num[j]); j++; } printf("\n"); printf("Median3 Value:\n"); if(y>0) { while(k<y) printf("%d ",a[k++]); printf("\n"); } else printf("none\n"); }
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- Easy-27
- 设计模式之模板模式
- FZU1406 之 凯撒密码
- opencv实现自己的中值滤波
- jquery基础笔记
- 快速排序
- javaWeb将数据保存到数据库中文出现问号,解决办法。
- git add后 未commit git reset --hard如何恢复
- 解决安装mantisbt2.4.0遇到的date问题
- jQuery选择器
- 设计模式之观察者模式
- .Net下RabbitMQ的使用(1) -- 初识RabbitMQ
- ZooKeeper简单介绍
- python多线程共享变量的使用和效率