写了一个快速排序的小程序,在Ubuntu上运行跑过的,快速排序的原理就不说了,在程序中体会最直接了。
#include<stdio.h>
#include<stdlib.h>
#define SWAP(a, b) {int temp; temp = a; a = b; b = temp;}
void quick_sort_sub(int *data, int left, int right)
{
int left_index = left;
int right_index = right;
int pivot = data[(left + right)/2];
while(left_index <= right_index)
{
for( ; data[left_index] < pivot; left_index++)
;
for( ; data[right_index] > pivot; right_index--)
;
if (left_index <= right_index)
{
SWAP(data[left_index], data[right_index]);
left_index++;
right_index--;
}
}
if (right_index > left)
{
quick_sort_sub(data, left, right_index);
}
if (left_index < right)
{
quick_sort_sub(data, left_index, right);
}
}
void quick_sort(int *data, int data_size)
{
quick_sort_sub(data, 0, (data_size - 1));
}
int main(void)
{
int data_size = 10;
int data[data_size];
int i = 0;
printf("the rand number is : \n");
for(i = 0; i < 10; i++)
{
data[i] = rand() % 10;
printf("%4d ", data[i]);
if (((i+1) % 5 == 0) && (0 != i))
{
printf("\n");
}
}
quick_sort(data, data_size);
printf("the quick_sort number is : \n");
for(i = 0; i < 10; i++)
{
printf("%4d ", data[i]);
if (((i+1) % 5 == 0) && (0 != i))
{
printf("\n");
}
}
return 0;
}