這是使用快速排序算法對數組中的數據進行降序排序的代碼,每次運行隨機生成 10 個數,C 語言遞歸實現。
#include?<stdio.h>#include?<stdlib.h>
#include?<time.h>
void?swap(int?*x,?int?*y)?{
int?t?=?*x;
*x?=?*y;
*y?=?t;
}
void?quick_sort_recursive(int?arr[],?int?start,?int?end)?{
if?(start?>=?end)
return;
int?mid?=?arr[end];
int?left?=?start,?right?=?end?-?1;
while?(left?<?right)?{
while?(arr[left]?>?mid?&&?left?<?right)
left++;
while?(arr[right]?<=?mid?&&?left?<?right)
right--;
swap(&arr[left],?&arr[right]);
}
if?(arr[left]?<=?arr[end])
swap(&arr[left],?&arr[end]);
else
left++;
if?(left)?{
quick_sort_recursive(arr,?start,?left?-?1);
}
quick_sort_recursive(arr,?left?+?1,?end);
}
void?quick_sort(int?arr[],?int?len)?{
quick_sort_recursive(arr,?0,?len?-?1);
}
int?main()?{
int?arr[10],?i;
srand(time(NULL));
for(i=0;?i<10;?i++)
arr[i]?=?rand();
quick_sort(arr,?10);
for(i=0;?i<10;?i++)
printf("%d?",?arr[i]);
}