📄 sort.cpp
字号:
/*______________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________
排序算法比较
设计要求:利用随机函数产生N个随机整数(N = 500,1000,1500,2000,2500,…,30000),
利用直接插入排序、折半插入排序,起泡排序、快速排序、选择排序、堆排序,基数排序七种排序方法
(可添加其它排序方法)进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的时间。
附加说明:另统计了每次排序的比较次数和交换次数。
________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________*/
#include "stdio.h"
#include "Sort.h"
void main()
{
char again;
do{
system("cls");
int N;
printf("请问您想要产生多少个随机数进行排序?\n");
scanf("%d",&N);
printf("\n");
printf("请问您想要用何种方法排序?\n");
printf("a、直接插入排序 b、折半插入排序 c、起泡排序\n");
printf("d、快速排序 e、选择排序 f、堆排序 g、基数排序\n");
printf("\n");
getchar();
char option;
scanf("%c",&option);
printf("\n");
SqList L;
SLList S;
int time1,time2;
switch(option){
case 'a':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
InsertSort(L);
time2=GetTime();
break;
case 'b':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
BInsertSort(L);
time2=GetTime();
break;
case 'c':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
BubbleSort(L);
time2=GetTime();
break;
case 'd':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
QuickSort(L);
time2=GetTime();
break;
case 'e':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
SelectSort(L);
time2=GetTime();
break;
case 'f':
InitSqList(L,N);
printf("随机生成的序列为:\n");
PrintSqList(L);
printf("\n\n");
time1=GetTime();
HeapSort(L);
time2=GetTime();
break;
case 'g':
InitSLList(S,N);
printf("随机生成的序列为:\n");
PrintSLList(S);
printf("\n\n");
time1=GetTime();
RadixSort(S);
time2=GetTime();
break;
}
printf("排序后的序列为:\n");
if(option=='g') PrintSLList(S);
else PrintSqList(L);
printf("\n\n");
printf("比较次数为:\n");
printf("%d\n",compareCount);
printf("\n");
printf("移动次数为:\n");
printf("%d\n",exchangeCount);
printf("\n");
printf("排序所用时间为:%d us\n\n",time2-time1);
printf("请问还要继续吗?\n");
getchar();
scanf("%c",&again);
printf("\n");
}while(toupper(again)=='Y');
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -