排序算法的比较。
系统总体说明:
编程实现选择、冒泡、直接插入、折半插入、希尔、快速和归并等排序算法,并计算每种算法的比较、移动次数。
完成功能的详细说明:
1.要求由键盘输入待排序数据的个数和待排序数据。
2.实现选择、冒泡、直接插入、折半插入、希尔、快速和归并等排序算法。
3.比较每种排序算法在排序码个数相同的情况下,排序过程中排序码的比较次数和元素的移动次数。
4.待排序数据量分别取n=10,30,50,100时,比较同一个算法在排序过程中排序码的比较次数和元素的移动次数。
5.输出结果中,给出各算法按两种方式进行比较后的结果。
#include
#include
#include<>
#define random(x)(rand()%x)
using namespace std;
struct data
int dt[100];
int length;
int compare;
int remove;
class list
public:
static int compare;
static int remove;
data insertsort(data,int);/直接插入排序插入排序分直接插入排序和折半插入排序。
void binsertsort(data);/折半插入排序折半插入排序减少了比较次数而未改变移动次数。
void shellsort(data);/希尔排序希尔排序是对直接插入排序的一种改进算法。
void selectsort(data);/直接选择排序。
void bubblesort(data);/冒泡排序交换排序分冒泡排序和快速排序。
void quicksort(data&,int,int);/快速排序快速排序是对冒泡排序的一种改进
void quicksortx(data);
void towmerge(data&,data&,int,int,int);/二路归并排序算法。
void mergepass(data&,data&,int);/一趟2路归并算法。
void mergesort(data,data);/2-路归并算法。
list(){
void display(data);
void show(int);
data getdata1(int);
data getdata2();
void play1(int);
void play2();
void play3();
int list::remove=0;
int list::compare=0;
data list::getdata1(int length)
data data;
srand((int)time(0));
for(int i=0;i
return data;
data list::getdata2()
data data;
int n=0;
int m;
cout<<"请输入待输入数据的个数:";
cin>>n;
for(int i=0;i
return data;
void list::display(data data)
for(int i=0;i<
data list::insertsort(data data,int h)//直接插入排序。
int n=0;
for(int i=1;i<
if(h==1)
return data;
void list::binsertsort(data data)//折半插入排序
int n=0;
int j=0;
int low=0;
int high=0;
int middle=0;
for(int i=1;i<
for(j=i-1;j>high;j--)
//cout< cout<<"折半插入排序--"
cout<<"比较次数:"<移动次数:" void list::selectsort(data data)//直接选择排序。 for(int i=0;i< cout<<"直接选择排序--" cout<<"比较次数:"<移动次数:"< // display(data); void list::bubblesort(data data)//冒泡排序。 int n=0; for(int i=>0;i--) for(int j=0;j if(>n= cout<<"冒泡排序 -- cout<<"比较次数:"<移动次数:" void list::quicksort(data &data,int s,int t)//快速排序。 int n; int i=s; int j=t; if(j>i) while(j>i); quicksort(data,s,i-1); quicksort(data,j+1,t); void list::quicksortx(data data) quicksort(data,0,cout<<"快速排序 -- cout<<"比较次数:"<移动次数:" void list::shellsort(data data)//希尔排序 int i=0,j=0,gap=0; int n=0; gap=while(gap>0) gap=gap/2; cout<<"希尔排序 -- cout<<"比较次数:"<移动次数:" void list::towmerge(data&data1,data&data2,int s,int m,int t) int i,j,k; c 数据结构课程设计排序。计算机科学与技术专业辽宁科技大学姓名刘。排序综合。利用随机函数产生n个随机整数 20000以上 对这些数进行多种方法进行排序。要求 1 至少采用三种方法实现上述问题求解 提示,可采用的方法有插入排序 希尔排序 起泡排序 快速排序 选择排序 堆排序 归并排序 并把排序后的结果... 电子设计应用软件训练任务。一 训练任务。1 protel 部分。1 熟练掌握protel 软件的使用 2 按要求绘制电路原理图和pcb 版图 能够用自动布线和手动布线相结合 3 能够按要求建立元件库和封装库。2 软件设计部分。按照给定的软件设计任务完成相应的软件设计 见软件设计任务部分 二 基本要求... 2011年工厂供配电技术课程设计题目。某大型铸造工厂配电一次系统设计。任务书 广东水利电力职业技术学院电力工程系。2011年6月广州。1.原始资料。1.1全厂用电设备情况 1 负荷大小。全厂用电设备总安装容量 6630kw 10kv侧计算负荷总容量 有功功率4921kw 无功功率1512kvar各车...排序课程设计c
课程设计 排序算法比较
课程设计题目