#include #include #include // for strcmp #include // time using namespace std; const int MAXVALUE=1000000; void fillit(int array[], int arraysize) { int i; for(i=0;i array[i+1]) { inorder = false; } } return(inorder); } void PrintAboutOrder(int array[],int arraysize){ cout << "The array is " ; if (!IsInOrder(array,arraysize)) { cout << "NOT "; } cout << "in order." << endl; return; } void sort1(int array[], int arraysize) { int i, j, tmp; for(i=0;i array[j]) { tmp = array[i]; array[i] = array[j]; array[j] = tmp; } } } return; } void sort2(int array[], int arraysize) { int i,j,tmp; int swppos; for(i=0;i array[j]) { swppos = j; } } if (swppos != i) { tmp = array[i]; array[i] = array[swppos]; array[swppos] = tmp; } } return; } void sort3(int array[], int arraysize) { int i,j,tmp; bool swapped=true; j = arraysize-1; while (swapped && (j > 0)) { swapped = false; for(i=0;i array[i+1]) { swapped = true; tmp = array[i]; array[i] = array[i+1]; array[i+1] = tmp; } } j--; } if (j > 1) { cout << "The third sort quit early!" << endl; } } void sort4a(int array[], int start, int stop, int & pivot) { int l,r; int tmp; l = start; r = stop-1; pivot = stop; while (l <= r) { while ((l <= r) && (array[pivot] >= array[l])) { l ++; } while ((l <= r) && (array[pivot] <= array[r])) { r--; } if (l < r) { tmp = array[l]; array[l] = array[r]; array[r] = tmp; } } tmp = array[l]; array[l] = array[pivot]; array[pivot] = tmp; pivot = l; return; } void sort4b(int array[], int start, int end){ int pivot; if(start < end) { sort4a(array, start,end,pivot); sort4b(array,start,pivot-1); sort4b(array,pivot+1,end); } return; } void sort4(int array[], int size) { sort4b(array,0,size-1); } void Sort(int sort, int array[], int arraysize){ int starttime, stoptime; int * sortarray; sortarray = new int[arraysize]; CopyIt(array, sortarray, arraysize); PrintAboutOrder(sortarray,arraysize); starttime = time(NULL); switch (sort) { case 1: sort1(sortarray, arraysize); break; case 2: sort2(sortarray, arraysize); break; case 3: sort3(sortarray, arraysize); break; case 4: sort4(sortarray, arraysize); break; } stoptime = time(NULL); PrintAboutOrder(sortarray,arraysize); cout << "Sort" << sort << " took " ; cout << stoptime - starttime; cout <<" ticks." << endl; cout << endl; delete sortarray; return; } int main (int argc, char * argv[]) { int i; int arraysize = 10000; int * array; bool doall = true; for(i=1;i