当前位置:   article > 正文

多种排序方法_1.随机函数产生10000个随机数,用简单选择排序方法排序。代码

1.随机函数产生10000个随机数,用简单选择排序方法排序。代码

多种排序方法及验证

编译环境: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]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/107012
推荐阅读
相关标签
  

闽ICP备14008679号