排序综合
![排序综合](https://img.360docs.net/img2a/019ttzh39fcej83i2sui-a1.webp)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008/2009学年度第二学期
《数据结构》课程设计
说明书
题目:排序综合
班级:
姓名:
学号:
指导教师:
日期:09.6.22~~09.6.27
计算机系与信息工程
1、问题描述
2、需求分析
3、开发环境
4、算法设计思想
5、流程图
6、课程设计过程中的关键算法
7、测试及结果
8、总结与收获
9、参考文献
10、指导教师评语
附件一:程序清单
#include
#include
#include
#include
using namespace std;
const int N=20000;
#define ElemType int
void quicksort(ElemType R[],int left, int right) //快速查找{
int i=left,j=right;
ElemType temp=R[i];
while(i { while((R[j]>temp)&&(i j--; if(i R[i++]=R[j]; while((R[i]<=temp)&&(i i++; if(i R[j--]=R[i]; } R[i]=temp; if(left quicksort(R,left,i-1); if(i+1 quicksort(R,i+1,right); } void creatheap(ElemType R[],int i,int n) { int j; ElemType t; t=R[i]; j=2*(i+1)-1; while(j<=n) { if((j j++; if(t { R[i]=R[j]; i=j; j=2*(i+1)-1; } else j=n+1; } R[i]=t; } void heapsort(ElemType R[],int n) //堆排序 { int i; ElemType t; for(i=n/2-1;i>=0;i--) creatheap(R,i,n-1); for(i=n-1;i>=1;i--) { t=R[0]; R[0]=R[i]; R[i]=t; creatheap(R,0,i-1); } } void merge(ElemType R[],ElemType A[],int s,int m,int t){ int i,j,k; i=s;j=m+1;k=s; while((i<=m)&&(j<=t)) if(R[i]<=R[j]) { A[k]=R[i]; i++;k++; } else { A[k]=R[j]; j++;k++; } while(i<=m) { A[k]=R[i]; i++;k++; } while(j<=t) { A[k]=R[j]; j++;k++; } } void mergepass(ElemType R[],ElemType A[],int n,int c) //归并排序{ int j,i; i=0; while(i+2*c-1<=n-1) { merge(R,A,i,i+c-1,i+2*c-1); i+=2*c; } if(i+c-1 merge(R,A,i,i+c-1,n-1); else for(j=i;j<=n-1;j++) A[j]=R[j]; } void mergesort(ElemType R[],int n) { int c=1; ElemType A[N]; while(c { mergepass(R,A,n,c); c*=2; mergepass(A,R,n,c); c*=2; } } void print(ElemType R[],int n) { for(int i=0;i<=n-1;i++) { if(i%10==0) { cout< } cout< } cout< } inline unsigned __int64 GetCycleCount() { __asm _emit 0x0F __asm _emit 0x31 } void main() { char ch; ElemType R[N],T[N]; unsigned long t,t1,t2; double tt1,tt2,tt3; LARGE_INTEGER tc; QueryPerformanceFrequency(&tc); srand(GetCycleCount()); for(int i=0;i<=N-1;i++) T[i]=rand(); print(T,N); cout<<"快速排序开始(y/n)"; cin>>ch; if(ch=='y') { for(i=0;i<=N;i++) R[i]=T[i]; t1=(unsigned long)GetCycleCount(); quicksort(R,0,N-1); t2=(unsigned long)GetCycleCount(); t=t2-t1; tt1=(double)t*1000/tc.QuadPart; print(R,N); ofstream outfile("E:\123",ios::out); if(! outfile) { cerr<<"open error!"< exit(1); } for(int i=0;i<20000;i++) {