您的位置:首页 > 其它

快速排序(递归)

2012-07-16 16:44 363 查看
#include <stdio.h>
#include <stdlib.h>
#define NUM_OF_ARRAY	100
void quick_sort(int *array, int left, int right)
{
int old_left = left;
int old_right = right;
int standard_data = array[left];

printf(".");
while(left < right)
{
while((array[right] >= standard_data) && (left < right))	right--;
if(left != right)
{
array[left] = array[right];
left++;
}

while((array[left] <= standard_data) && (left < right))		left++;
if(left != right)
{
array[right] = array[left];
right--;
}
}
array[left] = standard_data;
if(old_left < left)
quick_sort(array, old_left, left-1);
if(old_right > left)
quick_sort(array, left+1, old_right);
}
int main(int argc, char *argv[])
{
int arr[NUM_OF_ARRAY] = {0};
int i=0;

srand(getpid());
for(i=0; i<NUM_OF_ARRAY; i++)
{
arr[i] = rand();
printf("%d\n", arr[i]);
}

quick_sort(arr, 0, NUM_OF_ARRAY-1);
printf("\n");

for(i=0; i<NUM_OF_ARRAY; i++)
{
printf("%d\n", arr[i]);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: