多种排序方法

多种排序方法,第1张

多种排序方法 多种排序方法及验证

编译环境:Microsoft Visual C++2010学习版
参考教材:数据结构:C语言版/严蔚敏,李冬梅,吴伟民编
备注:本文留作作者自用,如有错误敬请指出

内容描述

第一步,利用程序随机生成10000个在0-9999之间的数字,将10000个数据保存在数组A中
第二步,分别编写直接插入排序、折半插入排序、希尔排 序、冒泡排序、快速排序、简单选择排序、 归并排序算法程序(每个算法用函数封装)
第三步,调用每个排序方法对数组A进行排序,同时计算消耗时间,并输出。

实现代码
#include
#include
#include 
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=high+1;--j){
	      L.a[j+1]=L.a[j];
	   }
	   L.a[high+1]=L.a[0];
	}
}
//*********************************
void ShellInsert(SqList &L,int dk){  //希尔排序
	for(i=dk+1;i<=L.length;++i){
		if(L.a[i].key0 && L.a[0].key0 && flag==1){
      flag=0;
	  for(j=1;j<=m;++j){
		  if(L.a[j].key>L.a[j+1].key){
		     flag=1;
			 t=L.a[j].key;
			 L.a[j].key=L.a[j+1].key;
			 L.a[j+1].key=t;
		  }
	  }
	  --m;
   }
}
//*********************************
int Partition(SqList &L,int low,int high){   //快速排序
    L.a[0]=L.a[low];
	pivotkey=L.a[low].key;
	while(low=pivotkey)
		   --high;
	   L.a[low]=L.a[high];
	   while(low					
										


					

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5691990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存