亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? allsorttimecompare.cpp

?? 實現(xiàn)各種排序算法
?? CPP
字號:
  ////////////////////////////////////////////////////////////
 //  計算不同初始狀態(tài)與排序規(guī)模下的各種排序算法的運行時間  //
////////////////////////////////////////////////////////////

#include "time.h"
#include "iostream.h"
#include "stdlib.h"
#include "string.h"
#include "Compare.h"
#include "Node.h"
#include "StraightInsertSorter.h"
#include "ImprovedInsertSorter.h"
#include "BinaryInsertSorter.h"
#include "BubleSorter.h"
#include "ImprovedBubleSorter.h"
#include "StraightSelectSorter.h"
#include "ShellSorter.h"
#include "HeapSorter.h"
#include "QuickSorter.h"
#include "ImprovedQuickSorter.h"
#include "TwoWayMergeSorter.h"
#include "ImprovedTwoWayMergeSorter.h"
#include "BucketSorter.h"
#include "RadixSorter.h"
#include "LinkRadixSorter.h"


char a[3][10]={"隨機","正序","逆序"};

// 設(shè)定隨即函數(shù)的種子
inline void Randomize() 
  { srand(1); }

//返回一個0到n-1之間的隨機數(shù)
inline int Random(int n)
  { return rand() % (n); }

clock_t tstart = 0;  

void Settime()
  { tstart = clock(); }

double Gettime()
  { return (double)((double)clock() - (double)tstart)/
           (double)CLOCKS_PER_SEC; }

inline void swap(int * array, int x, int y)	//交換位置x和y的元素
{
	int temp=array[x];
	array[x]=array[y];
	array[y]=temp;
}
void main()
{
	int numofsort;	//輸入規(guī)模:10, 100 ,1000 ,10000 ,100000 ,1000000 
	int wayofsort;	//排序算法的序號
	int flag;		//初始數(shù)組順序:正序、逆序、隨機順序,其中正序和逆序分別為已排序及逆排序
	while(1)
	{
		Randomize();	
		cout<<endl;			
		cout<<"  直接插入排序                   1   優(yōu)化的插入排序                    2"<<endl;
		cout<<"  二分法插入排序                 3   起泡排序                           4"<<endl;
		cout<<"  優(yōu)化的起泡排序                 5   直接選擇排序                       6"<<endl;
		cout<<"  Shell 排序/2                   7   Shell 排序/3                       8"<<endl;
		cout<<"  快速排序                       9   優(yōu)化的快速排序                    10"<<endl;
		cout<<"  兩路歸并排序                  11   優(yōu)化的兩路歸并排序                12"<<endl;
		cout<<"  堆排序                        13   基數(shù)排序/2                        14"<<endl;
		cout<<"  基數(shù)排序/4                    15   基數(shù)排序/8                        16"<<endl;
		cout<<"  基數(shù)排序(隊列實現(xiàn))/2          17   基數(shù)排序(隊列實現(xiàn))/4              18"<<endl;
		cout<<"  基數(shù)排序(隊列實現(xiàn))/8          19   計算所有排序時間                  20"<<endl;
		cout<<endl;

		cout<<"請輸入排序算法的序號(0-退出):";
		cin>>wayofsort;
		if(wayofsort==0) exit(1);
		cout<<"請輸入數(shù)組規(guī)模:";
		cin>>numofsort;
		if(numofsort>1000000)
		{
			cout<<"sorry,數(shù)據(jù)規(guī)模太大!";
			exit(1);
		}
		cout<<"請輸入初始狀態(tài)(隨機0 正序1 逆序2):";
		cin>>flag;
		int allflag=0;
		wayofsort--;
		if(wayofsort==19)
		{
			wayofsort=0;
			allflag=1;
		}
begin:
		wayofsort++;
		int *sortarray =new int[1000000];
		//產(chǎn)生隨機數(shù)組,長度為1000000
		Randomize();	
		for(int i=0;i<1000000;i++)
		sortarray[i]=Random(32003);
		//產(chǎn)生正序、逆序數(shù)組
		if(flag==1||flag==2)
		{
			//實例化快速排序類
			ImprovedQuickSorter<int,Compare> sorter;
			sorter.Sort(sortarray,0,1000000-1);
			if(flag==2)
			{
				for(int i=0;i<1000000/2;i++)
					swap(sortarray,i,999999-i);
			}
		}
		//開始排序
		switch(wayofsort)
		{
		case 1:
			{	//直接插入排序
				//實例化直接插入排序類
				StraightInsertSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"直接插入排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 2:
			{	//改進的插入排序
				//實例化優(yōu)化的插入排序類
				ImprovedInsertSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"改進的插入排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 3:
			{	//二分法插入排序
				//實例化二分法插入排序類
				BinaryInsertSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"二分法插入排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 4:
			{	//起泡排序
				//實例化起泡排序類
				BubleSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"起泡排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 5:
			{	//改進的起泡排序
				//實例化優(yōu)化的起泡排序類
				ImprovedBubleSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"改進的起泡排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 6:
			{	//直接選擇排序
				//實例化直接選擇排序類
				StraightSelectSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"直接選擇排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 7:
			{//Shell 排序/2
				//實例化Shell排序類
				ShellSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"Shell 排序/2"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 8:
			{//Shell 排序/3
				//實例化Shell排序類
				ShellSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.delta3Sort(sortarray+numofsort*i,numofsort);
				cout<<"Shell 排序/3"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 9:
			{	//快速排序
				//實例化快速排序類
				QuickSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray,0+numofsort*i,numofsort-1+numofsort*i);
				cout<<"快速排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 10:
			{	//優(yōu)化的快速排序
				//實例化優(yōu)化的快速排序類
				ImprovedQuickSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray,0+numofsort*i,numofsort-1+numofsort*i);
				cout<<"優(yōu)化的快速排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 11:
			{	//兩路歸并排序
				//實例化兩路歸并排序類
				TwoWayMergeSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray,0+numofsort*i,numofsort-1+numofsort*i);
				cout<<"兩路歸并排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 12:
			{	//優(yōu)化的兩路歸并排序
				//實例化優(yōu)化的兩路歸并排序類
				ImprovedTwoWayMergeSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray,0+numofsort*i,numofsort-1+numofsort*i);
				cout<<"優(yōu)化的兩路歸并排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 13:
			{	//堆排序
				//實例化堆排序類
				HeapSorter<int,Compare> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort);
				cout<<"堆排序"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 14:
			{	//基數(shù)排序/2
				//實例化基數(shù)排序類
				RadixSorter<int> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort,16,2);
				cout<<"基數(shù)排序/2"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 15:
			{	//基數(shù)排序/4
				//實例化基數(shù)排序類
				RadixSorter<int> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
					sorter.Sort(sortarray+numofsort*i,numofsort,8,4);
				cout<<"基數(shù)排序/4"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 16:
			{	//基數(shù)排序/8
				//實例化基數(shù)排序類
				RadixSorter<int> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
				{
				sorter.Sort(sortarray+numofsort*i,numofsort,5,8);
				}
				cout<<"基數(shù)排序/8"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 17:
			{	//基數(shù)排序(隊列實現(xiàn))/2
				Node* sortarray1=new Node[1000000];
				for(int ii=0;ii<1000000;ii++)
					sortarray1[ii].key=sortarray[ii];

				//實例化基于靜態(tài)鏈的基數(shù)排序類
				LinkRadixSorter<Node> sorter;

				Settime();
				for(int i=0;i<1000000/numofsort;i++)
				{
				sorter.Sort(sortarray1+numofsort*i,numofsort,16,2);
				}
				cout<<"基數(shù)排序(隊列實現(xiàn))/2"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				delete[] sortarray1;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 18:
			{	//基數(shù)排序(隊列實現(xiàn))/4
				Node* sortarray1=new Node[1000000];
				for(int ii=0;ii<1000000;ii++)
					sortarray1[ii].key=sortarray[ii];

				//實例化基于靜態(tài)鏈的基數(shù)排序類
				LinkRadixSorter<Node> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
				{
				sorter.Sort(sortarray1+numofsort*i,numofsort,8,4);
				}
				cout<<"基數(shù)排序(隊列實現(xiàn))/4"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				delete[] sortarray1;
				if(allflag==1)  
					goto begin;
				break;
			}
		case 19:
			{	//基數(shù)排序(隊列實現(xiàn))/8
				Node* sortarray1=new Node[1000000];
				for(int ii=0;ii<1000000;ii++)
					sortarray1[ii].key=sortarray[ii];

				//實例化基于靜態(tài)鏈的基數(shù)排序類
				LinkRadixSorter<Node> sorter;
				Settime();
				for(int i=0;i<1000000/numofsort;i++)
				{
				sorter.Sort(sortarray1+numofsort*i,numofsort,5,8);
				}
				cout<<"基數(shù)排序(隊列實現(xiàn))/8"<<endl
					<<"排序規(guī)模:"<<numofsort<<endl<<"初始狀態(tài):"<<a[flag]<<endl
					<<Gettime()/1000000*numofsort<<"seconds"<<endl;
				delete[] sortarray;
				delete[] sortarray1;
				if(allflag==1)  
					goto begin;
				break;
			}
			
		}

	}//end while
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91麻豆高清视频| 欧美一区二区三区四区视频| 婷婷国产v国产偷v亚洲高清| 国产亚洲人成网站| 91麻豆精品国产91久久久更新时间 | 精品动漫一区二区三区在线观看| 99精品黄色片免费大全| 国产在线观看一区二区| 天天色 色综合| 亚洲男人的天堂av| 国产精品天天看| 久久久五月婷婷| 日韩美女主播在线视频一区二区三区 | 亚洲已满18点击进入久久| 亚洲国产精品精华液2区45| 欧美videos中文字幕| 欧美日产国产精品| 欧美体内she精高潮| 色哟哟一区二区三区| 成人一道本在线| 国产成人午夜精品5599| 国产精一品亚洲二区在线视频| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲国产一二三| 一区二区三区免费| 中文字幕亚洲欧美在线不卡| 国产欧美视频一区二区| 久久亚洲综合av| 欧美精品一区二区三区很污很色的| 91精品久久久久久久99蜜桃| 精品视频一区 二区 三区| 色综合久久久久网| 色av一区二区| 欧美三级在线看| 欧美日韩小视频| 7777精品伊人久久久大香线蕉最新版 | 日韩欧美色综合| 欧美成人vps| www国产成人| 欧美极品另类videosde| 国产欧美日韩在线| 国产精品理伦片| 国产精品久久久久久久久久久免费看| 日本一区二区三区视频视频| 国产精品蜜臀av| 亚洲天天做日日做天天谢日日欢| 中文字幕一区在线观看| 综合久久一区二区三区| 一区二区三区四区乱视频| 一区二区三区在线高清| 亚洲成av人**亚洲成av**| 视频在线在亚洲| 久久精品国产亚洲5555| 国产精品888| 91在线播放网址| 欧美日韩一区视频| 欧美一区二区三区四区高清| 久久久综合视频| 中文字幕中文乱码欧美一区二区| 亚洲精品视频在线观看网站| 日韩电影在线免费看| 国产精品综合网| 色综合一个色综合亚洲| 884aa四虎影成人精品一区| 日韩精品一区二区三区视频在线观看 | 美女视频黄免费的久久| 国产电影精品久久禁18| 色综合激情久久| 91精品欧美一区二区三区综合在 | 欧美性高清videossexo| 日韩午夜精品视频| 国产精品免费久久久久| 性做久久久久久免费观看| 精品一区二区三区在线观看 | 亚洲精品免费在线播放| 日产欧产美韩系列久久99| 成人午夜又粗又硬又大| 欧美日韩日日摸| 久久久精品国产99久久精品芒果 | 日韩视频一区二区三区在线播放| 久久综合国产精品| 亚洲午夜影视影院在线观看| 精品亚洲免费视频| 在线观看国产91| 亚洲精品一区二区三区在线观看| 亚洲欧美国产77777| 久久精品99国产国产精| 色综合视频一区二区三区高清| 日韩一级精品视频在线观看| 亚洲黄色性网站| 国产资源精品在线观看| 日本韩国一区二区三区| 久久久国际精品| 日韩精品视频网| 99re成人在线| 久久色中文字幕| 亚洲va欧美va人人爽午夜| 国产成人午夜片在线观看高清观看| 欧美日韩小视频| 亚洲欧洲av色图| 国产电影一区在线| 日韩精品专区在线影院重磅| 亚洲高清视频在线| 99热99精品| 国产日韩精品一区| 久久99久久久欧美国产| 欧美色图12p| 亚洲欧美成人一区二区三区| 国产成人在线视频网站| 精品第一国产综合精品aⅴ| 婷婷成人综合网| 欧美探花视频资源| 亚洲欧美欧美一区二区三区| 国产91精品免费| 国产色婷婷亚洲99精品小说| 久久精品久久综合| 88在线观看91蜜桃国自产| 亚洲午夜三级在线| 日本道色综合久久| 亚洲私人影院在线观看| 99久久99久久精品免费看蜜桃| 久久精品视频免费| 国产成人av一区二区三区在线观看| 日韩一级免费一区| 蜜臀av一区二区| 欧美成人女星排行榜| 麻豆成人在线观看| 精品电影一区二区| 国产一区二区三区不卡在线观看| 欧美白人最猛性xxxxx69交| 蜜桃在线一区二区三区| 日韩一级免费观看| 激情五月激情综合网| 2023国产精品自拍| 国产精品一级片在线观看| 久久久久国色av免费看影院| 国产精品综合一区二区三区| 久久久久久久久99精品| 国产成人啪午夜精品网站男同| 久久蜜桃av一区精品变态类天堂| 国产激情视频一区二区在线观看 | 99久久久精品| 亚洲乱码国产乱码精品精的特点| 91一区二区三区在线观看| 成人欧美一区二区三区在线播放| 白白色 亚洲乱淫| 亚洲美女屁股眼交| 欧美优质美女网站| 日韩电影在线免费看| 久久亚洲免费视频| 成人免费毛片嘿嘿连载视频| 亚洲欧美视频在线观看视频| 欧美亚洲国产一区在线观看网站| 亚洲成年人影院| 日韩欧美在线综合网| 国产精品资源网站| 亚洲免费看黄网站| 91精品国产aⅴ一区二区| 国产一区二区网址| 亚洲美腿欧美偷拍| 欧美一区在线视频| 国产福利精品一区二区| 亚洲女爱视频在线| 欧美一区二区三区精品| 国产成人鲁色资源国产91色综| 综合激情网...| 这里是久久伊人| 成人国产精品视频| 亚洲成人1区2区| 久久嫩草精品久久久精品一| 91女人视频在线观看| 日韩电影一区二区三区| 欧美激情中文字幕一区二区| 欧美三级电影在线看| 精品一区二区日韩| 综合分类小说区另类春色亚洲小说欧美| 欧美乱熟臀69xxxxxx| 国产成人在线看| 日韩一区精品字幕| 国产精品久久久久久久午夜片| 欧美福利电影网| 91在线视频免费观看| 久久精品国产色蜜蜜麻豆| 亚洲六月丁香色婷婷综合久久| 日韩精品一区二区三区中文精品 | 91久久香蕉国产日韩欧美9色| 日韩不卡一区二区三区| 中文字幕人成不卡一区| 欧美一级专区免费大片| 色婷婷综合中文久久一本| 国产一区二区不卡| 午夜欧美大尺度福利影院在线看| 国产午夜一区二区三区| 91精品国产高清一区二区三区蜜臀 | 国产日韩欧美精品在线| 91精品一区二区三区久久久久久| 91香蕉视频黄| 国产精品一二三| 日韩电影免费一区| 亚洲激情成人在线|