赞
踩
编译环境:Microsoft Visual C++2010学习版
参考教材:数据结构:C语言版/严蔚敏,李冬梅,吴伟民编
备注:本文留作作者自用,如有错误敬请指出
第一步,利用程序随机生成10000个在0-9999之间的数字,将10000个数据保存在数组A中
第二步,分别编写直接插入排序、折半插入排序、希尔排 序、冒泡排序、快速排序、简单选择排序、 归并排序算法程序(每个算法用函数封装)
第三步,调用每个排序方法对数组A进行排序,同时计算消耗时间,并输出。
#include<iostream> #include<cstdlib> #include <time.h> using namespace std; #define MAXSIZE 10000 typedef int KeyType; int i,j,low,high,m,k,flag,t,pivotkey; typedef struct{ KeyType key; }RedType;//记录类型 RedType S[MAXSIZE+1]; typedef struct{ RedType a[MAXSIZE+1]; int length; }SqList;//顺序表类型 void InsertSort(SqList &L){ //直接插入排序 for( i=2;i<L.length;++i){ if(L.a[i].key<L.a[i-1].key){ L.a[0]=L.a[i]; L.a[i]=L.a[i-1]; for(j=i-2;L.a[0].key<L.a[j].key;--j){ L.a[j+1]=L.a[j]; } L.a[j+1]=L.a[0]; } } } //********************************** void BInsertSort(SqList &L){ //折半插入排序 for(i=2;i<=L.length;++i){ L.a[0]=L.a[i]; low=1; high=i-1; while(low<=high){ m=(low+high)/2; if(L.a[0].key<L.a[m].key) high=m-1; else low=m+1; } for(j=i-1;j>=high+1;--j){ L.a[j+1]=L.a[j]; } L.a[high+1]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。