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

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

?? multi-sort1.cpp

?? this is many kind of sorting algorithm in c-c++ language
?? CPP
字號(hào):
/////////////////////
//                 //
// Dave S. Maynard //
// -- Daxxus       //
//                 //
/////////////////////
//                 //
//   March 2001    //
//                 //
/////////////////////

#include <iostream.h>
#include <stdlib.h>
#include <iomanip.h>
#include <time.h>
#include <string.h>
#include <math.h>
#include <list>

using namespace std;

//#define DEBUGIT

void mergeSort(int [], int, int, int []);
void Merge(int [], int, int, int, int []);

void insertionSort(int [], int);

void radix(int, int, int *, int *);
void radixSort(int *, int *, int);

void Heapify(int [], int, int);
void HeapSort(int [], int);
void BuildHeap(int [], int);

void insertionSort(list <float> &);
float* BucketSort(float [], int);

void Quicksort(int [], int, int);
void Swap(int [], int, int);
int Partition(int [], int, int);

void CountingSort(int [], int [], int, int);

void printResults(double, int);

#ifdef DEBUGIT
void printToScreen(int [], int, int);
void printToScreen(float [], int, int);
#endif

//////////
// Main //
//////////
void main()
{
int i = 0;
int startTime = 0;
int finishTime = 0;
double totalTime = 0.0;
int sampleSizeIndex;

int sampleSizes[] = {10, 50, 100, 500, 1000, 5000, 10000, 50000, 100000, 500000, 1000000};

cout << "Multi-Sort Program";

// Valid Input loop
while(1)
{
cout << endl << endl << "Sample Sizes:: ";
for(i = 0; i < 11; i++)
   cout << sampleSizes[i] << " ";
cout << endl << "Choices::       1  2   3   4    5    6     7     8      9     10      11" 
     << endl << endl << "Choose:: ";
cin >> sampleSizeIndex;
if((sampleSizeIndex < 1) || (sampleSizeIndex > 12))
   cout << "Your Choice must be between 1 and 12...";
else
   break;
}
cout << endl;

// Creation of the Random Data Array
int *rawData;
rawData = new int[sampleSizes[sampleSizeIndex - 1]];

// Seed
srand(time(NULL));

// Creation of the Random Data
for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   rawData[i] = rand();

cout << "Statistics::" << endl
     << "The Random Sample Size is " << sampleSizes[sampleSizeIndex - 1] << "." << endl << endl;

// MERGE SORT ///////////////////////////////////////////////
int *mergeData;
mergeData = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   mergeData[i] = rawData[i];

int *Temp;
Temp = new int[sampleSizes[sampleSizeIndex - 1]];

startTime = clock();
mergeSort(mergeData, 0, sampleSizes[sampleSizeIndex - 1] - 1, Temp);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(mergeData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] Temp;
delete [] mergeData;
 
totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 0);
// END MERGE SORT ///////////////////////////////////////////

// INSERTION SORT ///////////////////////////////////////////
int *insertionData;
insertionData = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   insertionData[i] = rawData[i];

startTime = clock();
insertionSort(insertionData, sampleSizes[sampleSizeIndex - 1]);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(insertionData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] insertionData;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 1);
// END INSERTION SORT ///////////////////////////////////////

// RADIX SORT ///////////////////////////////////////////////
int *radixData;
radixData = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   radixData[i] = rawData[i];

Temp = new int[sampleSizes[sampleSizeIndex - 1]];

startTime = clock();
radixSort(radixData, Temp, sampleSizes[sampleSizeIndex - 1]);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(radixData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] radixData;
delete [] Temp;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 2);
// END RADIX SORT ///////////////////////////////////////

// HEAP SORT ///////////////////////////////////////////
int *heapData;
heapData = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   heapData[i] = rawData[i];

startTime = clock();
HeapSort(heapData, sampleSizes[sampleSizeIndex - 1]);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(heapData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] heapData;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 3);
// END HEAP SORT ///////////////////////////////////////

// BUCKET SORT /////////////////////////////////////////
float *bucketData;
bucketData = new float[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   bucketData[i] = (rand() % 1000) / 1000.0;

startTime = clock();
BucketSort(bucketData, sampleSizes[sampleSizeIndex - 1]);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(bucketData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] bucketData;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 4);
// END BUCKET SORT ///////////////////////////////////////

// QUICK SORT ///////////////////////////////////////////
int *quickData;
quickData = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   quickData[i] = rawData[i];

startTime = clock();
Quicksort(quickData, 0, (sampleSizes[sampleSizeIndex - 1] - 1));
finishTime = clock();

#ifdef DEBUGIT
printToScreen(quickData, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] quickData;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 5);
// END QUICK SORT ///////////////////////////////////////

// COUNTING SORT ///////////////////////////////////////////
int *countingData;
countingData = new int[sampleSizes[sampleSizeIndex - 1]];

Temp = new int[sampleSizes[sampleSizeIndex - 1]];

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   Temp[i] = 0;

for(i = 0; i < sampleSizes[sampleSizeIndex - 1]; i++)
   countingData[i] = rawData[i];

startTime = clock();
CountingSort(countingData, Temp, 40000, sampleSizes[sampleSizeIndex - 1]);
finishTime = clock();

#ifdef DEBUGIT
printToScreen(Temp, sampleSizes[sampleSizeIndex - 1], 100);
#endif

delete [] countingData;
delete [] Temp;

totalTime = double(finishTime - startTime) / CLOCKS_PER_SEC;
printResults(totalTime, 6);
// END COUNTING SORT ///////////////////////////////////////

delete [] rawData;
cin.ignore();
cout << "Press [Enter] to Exit" << endl;
cin.get();
}

///////////////////////////
// recurseMerge Function //
///////////////////////////
void mergeSort(int array[], int i, int j, int Temp[])
{
int midpoint = 0;
   
// Array is empty
if(i == j)
   return;
   
// Midpoint
midpoint = (i + j) / 2;

// Recursive Calls
// Divided the Array into 2 SubArrays
mergeSort(array, i, midpoint, Temp);
mergeSort(array, midpoint + 1, j, Temp);
	
// Merge the SubArrays
Merge(array, i, j, midpoint, Temp);
}

////////////////////
// Merge Function //
////////////////////
void Merge(int values[], int i, int j, int midpoint, int Temp[])
{
int begin1 = i;
int end1 = midpoint;
int begin2 = midpoint + 1;
int end2 = j;
int index = i;

// Loop thru both SubArrays
for(; (begin1 <= end1) && (begin2 <= end2); index++)
   {
   // This copies the smallest of two values from SubArrays to Temp Array
   if(values[begin1] < values[begin2])
      {
      Temp[index] = values[begin1];
      begin1++;
      }
   else
      {
      Temp[index] = values[begin2];
      begin2++;
      }
   }
	
// Arranges the values in SubArray 1
for(; begin1 <= end1; begin1++, index++)
   Temp[index] = values[begin1];
	
// Arranges the values in SubArray 2
for(; begin2 <= end2; begin2++, index++)
   Temp[index] = values[begin2];
	
// Copies the values from the Temp Array to values Array
for(int k = i; k <= j; k++)
   values[k] = Temp[k];
}

////////////////////////////
// insertionSort Function //
////////////////////////////
void insertionSort(int values[], int size)
{
int key;

for(int j = 1; j < size; j++)
   {
   key = values[j];
   int i = j - 1;
   
   while((i >= 0) && (values[i] > key))
      {
      values[i+1] = values[i];
      i--;
      }

   values[i+1] = key;
   }
}

////////////////////////
// radixSort Function //
////////////////////////
void radixSort(int *_s, int *_t, int _n)
{
radix(0, _n, _s, _t);
radix(1, _n, _t, _s);
radix(2, _n, _s, _t);
radix(3, _n, _t, _s);
}

// radix Function //
////////////////////
void radix(int _b, int _n, int *_s, int *_d)
{
int count[256];
int index[256];
memset (count, 0, sizeof (count));
int i;
for(i = 0; i < _n; i++)
   count[((_s[i]) >> (_b * 8))&0xff]++;

index[0] = 0;
for(i = 1; i < 256; i++)
   index[i] = index[i-1] + count[i-1];
for(i = 0; i < _n; i++)
   _d[index[((_s[i]) >> (_b * 8))&0xff]++] = _s[i];
}

///////////////////////
// HeapSort Function //
///////////////////////
void HeapSort(int A[], int heapSize)
{
BuildHeap(A, heapSize);
for(int i=heapSize; i>1; --i)
   {
   int tmp = A[0];
   A[0] = A[i-1];
   A[i-1] = tmp;
   --heapSize;
   Heapify(A, 1, heapSize);
   }
}

////////////////////////
// BuildHeap Function //
////////////////////////
void BuildHeap(int A[], int heapSize)
{
for(int i=heapSize/2; i>0; --i)
   Heapify(A, i, heapSize);
}

//////////////////////
// Heapify Function //
//////////////////////
void Heapify(int A[], int i, int heapSize)
{
int l = 2 * i;
int r = 2 * i + 1;
int largest = 0;
if(l <= heapSize && A[l-1] > A[i-1])
   largest = l;
else
   largest = i;
if(r <= heapSize && A[r-1] > A[largest-1])
   largest = r;
if(largest != i)
   {
   int tmp = A[i-1];
   A[i-1] = A[largest-1];
   A[largest-1] = tmp;
   Heapify(A, largest, heapSize);
   }
}

////////////////////////////////////////////////////////
// Overloaded Insertion Sort Function for Bucket Sort //
////////////////////////////////////////////////////////
void insertionSort(list <float> & bucket)
{
if(bucket.size() == 1 || bucket.size() == 0)
   {
   return;
}
else
   {
   list <float>::iterator j = bucket.begin ();
   j++;
   for(; j != bucket.end(); j++)
      {
      float key = *j;
      list <float>::iterator k = j;
      k--;
      list <float>::iterator i = k;
      while(i != 0 && *i > key)
         {
         k = i;
         k++;
         *k = *i;
         i--;
         }
      k = i;
      k++;
      *k = key;
      } 
   }
}

//////////////////////////
// Bucket Sort Function //
//////////////////////////
float* BucketSort(float A[], int size)
{
int i = 0;
int index = 0;
list <float> *bucketData;
bucketData = new list <float> [size];
for(i = 0; i < size; i++)
   {
   index = (int)(A[i] *size);
   bucketData[index].push_back(A[i]);
   }
for(i = 0; i < size; i++)
   insertionSort(bucketData[i]);
list <float> concatList;
for(i = 0; i < size; i++)
   concatList.splice(concatList.end(), bucketData[i]);
list <float>::iterator concatListIterator = concatList.begin();
for(i = 0; i < size; i++)
   {
   A[i] = *concatListIterator;
   concatListIterator++;
   }
return A;
}

//////////////////////////////////////////////////////
// insertionSort Overloaded Function for BucketSort //
//////////////////////////////////////////////////////
void insertionSort(float values[], int size)
{
int key;

for(int j = 1; j < size; j++)
   {
   key = values[j];
   int i = j - 1;
   
   while((i >= 0) && (values[i] > key))
      {
      values[i+1] = values[i];
      i--;
      }

   values[i+1] = key;
   }
}

////////////////////////
// Quicksort Function //
////////////////////////
void Quicksort(int a[], int low, int high)
{
int q;
if(low < high)
   {
   q = Partition(a, low, high);
   Quicksort(a, low, q-1);
   Quicksort(a, q+1, high);
   }
}

///////////////////
// Swap Function //
///////////////////
void Swap(int a[], int one, int two)
{
int temp;
temp = a[one];
a[one] = a[two];
a[two] = temp;
}

////////////////////////
// Partition Function //
////////////////////////
int Partition( int a[], int low, int high)
{
int pivot, p_pos, i;
p_pos = low;
pivot = a[p_pos];
for(i=low+1;i<=high;i++)
   {
   if( a[i] < pivot )
      {
 	  p_pos++;
      Swap(a, p_pos, i);
      }
   }
Swap(a,low,p_pos);
return p_pos;
}

////////////////////////////
// Counting Sort Function //
////////////////////////////
void CountingSort(int A[], int B[], int k, int size)
{
int *C = new int[k];     // temp array
int i;

for(i=0; i<=k; i++)      // initialize C[] to be all 0's
   C[i] = 0;

for(i=0; i<size; i++)    // do the counting
   C[A[i]] = C[A[i]] +1;  // C[i] now has # of elements == to i

for(i=1; i<=k; i++)      // C[i] now has # of elements <= i
   C[i] = C[i] + C[i-1];

for(i=size-1; i>=0; i--) // build the sorted array
  {
  B[C[A[i]]-1] = A[i];
  C[A[i]] = C[A[i]] -1;
  }
}

///////////////////////////
// printResults Function //
///////////////////////////
void printResults(double totalTime, int title)
{
char* titles[] = {"Merge Sort", "Insertion Sort", "Radix Sort", "Heap Sort",
                  "Bucket Sort", "Quick Sort", "Counting Sort"};
cout << "The execution time for " << titles[title] << " is:: "  
     << setprecision(5) << setiosflags(ios::fixed|ios::showpoint) 
     << totalTime << " Seconds." << endl;
}

/////////////////////////////////////////////////////////////////////
// printToScreen Overloaded Function -- this is for debugging only //
/////////////////////////////////////////////////////////////////////
#ifdef DEBUGIT
void printToScreen(int values[], int size, int stepSize)
{
int columns = 0;
cout << endl << "DEBUG CODE::: " << endl;
for(int i = 0; i < size; i += stepSize)
   {
   cout << setw(6) << values[i];
   columns++;

   if(columns % 10 == 0)
      cout << endl;
   }
   cout << endl;
}

/////////////////////////////////////////////////////////////////////
// printToScreen Overloaded Function -- this is for debugging only //
/////////////////////////////////////////////////////////////////////
void printToScreen(float values[], int size, int stepSize)
{
int columns = 0;
cout << endl << "DEBUG CODE::: " << endl;
for(int i = 0; i < size; i += stepSize)
   {
   cout << setw(6) << setprecision(3) << setiosflags(ios::fixed|ios::showpoint) << values[i];
   columns++;

   if(columns % 10 == 0)
      cout << endl;
   }
   cout << endl;
}
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人免费视频网站| 亚洲精品欧美专区| 国产精品一卡二卡在线观看| 国产婷婷色一区二区三区四区| 不卡视频一二三四| 亚洲精选一二三| 成人免费在线播放视频| 69久久99精品久久久久婷婷 | 美美哒免费高清在线观看视频一区二区 | 久久久久一区二区三区四区| 色狠狠色噜噜噜综合网| 久久99精品国产.久久久久久| 国产精品国产三级国产aⅴ原创| 欧美老年两性高潮| www.日韩精品| 久久99久国产精品黄毛片色诱| 免费在线看成人av| 一区二区三区小说| 国产亲近乱来精品视频| 欧美成人乱码一区二区三区| 色哟哟欧美精品| 国产成人精品免费在线| 成人教育av在线| 色婷婷综合视频在线观看| 91成人看片片| 日韩一区二区三区视频| 欧美视频中文字幕| 91社区在线播放| 国产成人一级电影| 99久久综合狠狠综合久久| 欧美性受极品xxxx喷水| 欧美一区二区三区播放老司机| 欧美视频自拍偷拍| 精品少妇一区二区三区在线视频 | 美女性感视频久久| 国产激情91久久精品导航| 91啪在线观看| 日韩一区二区三区视频| 亚洲国产精品二十页| 久久只精品国产| 亚洲精品在线电影| 精品裸体舞一区二区三区| 国产精品美日韩| 国产精品嫩草99a| 午夜影院久久久| 亚洲电影一区二区| 一二三区精品福利视频| 蜜桃视频一区二区三区| 成人福利视频在线| 欧美理论电影在线| 国产精品欧美一区喷水| 三级在线观看一区二区| 日韩高清欧美激情| 免费人成在线不卡| 不卡一区二区三区四区| 91麻豆精品91久久久久同性| 国产精品嫩草影院com| 日本va欧美va瓶| 一本久道中文字幕精品亚洲嫩| 日韩亚洲欧美成人一区| 玉足女爽爽91| 国产成人在线观看| 日韩一级片网站| 亚洲乱码国产乱码精品精的特点| 久久av老司机精品网站导航| 国产老女人精品毛片久久| 在线免费不卡电影| 欧美精品1区2区3区| 中文字幕一区在线| 国内精品自线一区二区三区视频| 国产成人综合自拍| 91精品国产丝袜白色高跟鞋| 亚洲精品美腿丝袜| 成人影视亚洲图片在线| 色欲综合视频天天天| 久久久.com| 久久成人免费电影| 欧美丰满美乳xxx高潮www| 亚洲男人的天堂av| 奇米在线7777在线精品 | 国产日韩欧美综合在线| 免费观看一级特黄欧美大片| 91电影在线观看| 亚洲欧美视频在线观看视频| 国产精品1区2区3区在线观看| 日韩三级免费观看| 日韩和欧美一区二区三区| 色老头久久综合| 亚洲视频在线一区观看| 三级一区在线视频先锋| 日本丶国产丶欧美色综合| 中文字幕精品在线不卡| 国产精品一区二区三区四区| 日韩一级免费一区| 美国精品在线观看| 欧美一区二区三区精品| 日本强好片久久久久久aaa| 欧美日韩mp4| 国产精品久久久久久久久晋中 | 麻豆国产精品777777在线| 欧美视频在线观看一区| 亚洲综合色视频| 国产精品亚洲综合一区在线观看| 日韩免费在线观看| 一区二区三区毛片| 欧亚一区二区三区| 亚洲黄色av一区| 欧美色视频在线观看| 日本一区二区视频在线| 国产精品69久久久久水密桃| 久久久精品黄色| 国产成人日日夜夜| 欧美极品少妇xxxxⅹ高跟鞋 | 久久精品水蜜桃av综合天堂| 国产综合久久久久久久久久久久| 欧美电影免费提供在线观看| 久草这里只有精品视频| 久久综合九色综合欧美亚洲| 国产福利一区在线| 国产精品乱码人人做人人爱| 99久久婷婷国产综合精品电影| 日韩三级在线观看| 韩国欧美国产一区| 国产精品理论片| 在线观看一区二区视频| 日日夜夜免费精品| 久久亚洲精品国产精品紫薇| 福利电影一区二区| 久久久精品免费免费| av高清不卡在线| 亚洲第一主播视频| 欧美一区2区视频在线观看| 国产一区三区三区| 精品久久久久一区| 成人av手机在线观看| 一片黄亚洲嫩模| 这里只有精品视频在线观看| 国产精品影视网| 亚洲裸体在线观看| 日韩无一区二区| www.久久精品| 青青草97国产精品免费观看无弹窗版| 久久精品一区二区| 在线免费观看不卡av| 精品一区二区精品| 亚洲美女屁股眼交3| 日韩欧美国产电影| 99久久婷婷国产| 久久丁香综合五月国产三级网站| 国产精品美女一区二区三区| 欧美日韩一区二区三区不卡 | 97精品国产97久久久久久久久久久久| 一区二区不卡在线视频 午夜欧美不卡在| 欧美一区二区在线看| 成人免费看黄yyy456| 日韩激情视频在线观看| 国产精品入口麻豆九色| 欧美高清一级片在线| 成人午夜av影视| 免费观看30秒视频久久| 亚洲视频精选在线| 精品免费国产二区三区| 欧美中文字幕一二三区视频| 国产精品1024久久| 日日噜噜夜夜狠狠视频欧美人| 中文字幕二三区不卡| 91精品国产高清一区二区三区| 北岛玲一区二区三区四区| 免费xxxx性欧美18vr| 亚洲综合激情另类小说区| 国产日本欧洲亚洲| 日韩午夜激情视频| 欧美性videosxxxxx| 波多野结衣欧美| 国内久久精品视频| 日韩1区2区3区| 一区二区三区高清| 国产精品乱人伦| 久久久久久久综合色一本| 3751色影院一区二区三区| 色婷婷综合激情| 白白色亚洲国产精品| 国产精品自产自拍| 久久精品国产澳门| 日韩国产欧美在线视频| 亚洲在线成人精品| 亚洲欧美在线视频| 欧美韩国一区二区| 久久久99精品久久| 日韩美女在线视频| 欧美一三区三区四区免费在线看| 91福利国产精品| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美狂野另类xxxxoooo| 在线看不卡av| 欧美唯美清纯偷拍| 欧美吞精做爰啪啪高潮| 91黄色小视频| 欧美无人高清视频在线观看| 欧美系列日韩一区|