栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

多种排序方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多种排序方法

多种排序方法及验证

编译环境: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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691505.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号