C/C++ code#include
#include
#include
#define MAX_NUMBER 100000000
void create_random_numbers(float *numbers,int count)
{
srand((unsigned)time(NULL));
for(int i = 0; i < count;++i)
{
numbers[i] = (float)rand()/RAND_MAX*MAX_NUMBER;
}
}
void display_numbers(float *numbers,int count)
{
for(int i = 0; i < count; ++i)
{
if((i+1)%5 == 0)
{
putchar('\n');
}
printf("%.3f ",numbers[i]);
}
putchar('\n');
}
void quicksort(float *numbers,int start,int end)
{
if(start >= end) return;
float key = numbers[start];
int i_start = start;
int i_end = end;
for(;;)
{
while(numbers[i_end] > key && i_start < i_end)
{
--i_end;
}
if(i_start >= i_end) break;
numbers[i_start++] = numbers[i_end];
while(numbers[i_start] <= key && i_start < i_end)
{
++i_start;
}
if(i_start >= i_end) break;
numbers[i_end--] = numbers[i_start];
}
numbers[i_start] = key;
quicksort(numbers,start,i_start-1);
quicksort(numbers,i_start+1,end);
}
int main(void)
{
int NUM_COUNT=0;
time_t start_time,end_time;
printf("How many numbers do you want to sorting test: ");
scanf("%d",&NUM_COUNT);
float *numbers = (float*)malloc(sizeof(float)*NUM_COUNT);
create_random_numbers(numbers,NUM_COUNT);
puts("create random finished!");
printf("----------------------------------\n");
puts("sorting....");
time(&start_time);
quicksort(numbers,0,NUM_COUNT-1);
time(&end_time);
printf("used %d seconds!\n",end_time-start_time);
getchar();
puts("quick sort finished ,would you want to display the number?");
char choice = getchar();
if(choice == 'y')
{
display_numbers(numbers,NUM_COUNT);
}
free(numbers);
return 0;
}