|
|
|
|
|
| Author |
Message |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18 Feb 2008 13:33:00 IST
|
|
|
/* A program to sort a range of numbers with Insertion and Quicksort, check their sorting time and prompt the result on the screen */
/* use header file*/ #include <stdio.h> #include <iostream.h> #include <stdlib.h> #include <values.h> #include <time.h> #include <string.h> #include <conio.h>
/* define variable */ const int max=29000; int list[max]; FILE *fp; clock_t start,end; char any1[8];
/* Insertion sort module */ void insertion(int min1,int max1) { int a,b,v;
for(a=min1;a<=max1;a++) { v = list[a]; b = a; do { list[b] = list[b-1]; b = b - 1; } while(list[b-1] > v); list[b] = v; } }
/* sort partitioning element */ void sorthree(int x,int y,int z) { int temp;
if (list[x] > list[y]) { temp = list[x]; list[x] = list[y]; list[y] = temp; } if (list[z] < list[x]) { temp = list[x]; list[x] = list[z]; list[z] = temp; temp = list[y]; list[y] = list[z]; list[z] = temp; } if ((list[z] > list[x]) && (list[z] < list[y])) { temp = list[y]; list[y] = list[z]; list[z] = temp; } }
/* Quicksort module */ void quicksort(int min2,int max2) { int m,v,t,i,j,q;
if ((max2-min2) > 9) { m = (max2-min2+1)/2; sorthree(min2,m,max2); max2=max2-1; q = list[m]; list[m] = list[max2]; list[max2] = q;
v = list[max2]; i = min2+1; j = max2-1; do { do { i=i+1; } while (list[i] < v); do { j=j-1; } while (list[j] > v); t = list[i]; list[i] = list[j]; list[j] = t; } while (i<j); list[j]=list[i]; list[i]=list[max2]; list[max2]=t; quicksort(min2,i-1); quicksort(i+1,max2); } else insertion(m,max2); }
/* main program */ void main() { int i,j,k,min,max1; char any2[8];
clrscr(); cout << "Enter a file name to store data :"; cin >> any1; /* input data file name on */ cout << '\n' << "Generating file...waits\n\n";/* screen */
fp = fopen(any1,"w"); for(j=0;j<max/200;j++) { for(i=0;i<200;i++) /* write random values to file */ { k = rand(); fprintf(fp,"%d\n",k); } } fclose(fp);
fp = fopen(any1,"r"); i = 0; while(fscanf(fp,"%d\n",&k) != EOF) { list[i] = k; /* read values from file and assign to an array */ i = i + 1; } fclose(fp); min = 0; max1 = max; max1=max1-1; cout << "Sorting with Quicksort... waits" << '\n'; start = clock(); quicksort(min,max1); /* sort an unsorted list with quicksort */ end=clock(); float result = (end-start)/CLK_TCK; cout << "The time needs to sort " << max << " numbers in Quciksort is : " << result << " second(s)" << "\n\n";
cout << "Enter an output file for Quicksort : "; cin >> any2;
fp = fopen(any2,"w"); for(i=0;i<max;i++) { /* write the output from quicksort and put them */ k = list[i]; /*to a file */ fprintf(fp,"%d\n",k); } fclose(fp);
fp = fopen(any1,"r"); i = 0; while(fscanf(fp,"%d\n",&k) != EOF) { list[i] = k; i = i + 1; } fclose(fp); cout << "\nSorting with Insertion Sort... waits" << '\n'; start = clock(); insertion(0,max); /* sort an unsorted list with insertion sort */ end=clock(); result = (end-start)/CLK_TCK; cout << "The time needs to sort " << max << " numbers in Insertion is : " << result << " second(s)" << "\n\n";
cout << "Sort an already sorted array again with Quicksort..." << '\n'; min = 0; max1 = max; max1=max1-1; start = clock(); quicksort(min,max1); /* sort an already sort list with quicksort */ end=clock(); result = (end-start)/CLK_TCK; cout << "The time needs to sort " << max << " numbers in Quicksort is : " << result << " second(s)" << "\n";
cout << "Sort an already sorted array again with Insertion sort..." << '\n'; start = clock(); insertion(0,max); /* sort an already list with insertion sort */ end=clock(); result = (end-start)/CLK_TCK; cout << "The time needs to sort " << max << " numbers in Insertion sort is : " << result << " second(s)" << '\n'; }
|
Be not afraid of growing slowly.
Be afraid only of standing still.
|
this reply: 10 points
(with 2 
in 2 votes ) [?]
|
|
You have to be logged on to rate
|
|
|
|
|
|
|
|
|
|