⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.cpp

📁 实现多种排序算法比较 数据结构:用链表实现
💻 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 + -