原文: https://beginnersbook.com/2015/02/quicksort-program-in-c/

快速排序是一种分而治之的算法。步骤如下:1)从数组中选取一个元素,该元素称为支点元素。 2)将未排序的元素数组划分为两个数组,第一个子数组中是小于支点的值,而值大于支点的所有元素都在第二个子数组中(相等的值可以是任意一种)。此步骤称为分区操作。 3)对具有较小值的元素的子数组有序,和具有较大值的元素的子数组重复,递归地重复步骤 2,直到有序。我们在以下 C 程序中实现了相同的逻辑。

C 程序 - 快速排序算法实现

  1. #include<stdio.h>
  2. void quicksort(int number[25],int first,int last){
  3. int i, j, pivot, temp;
  4. if(first<last){
  5. pivot=first;
  6. i=first;
  7. j=last;
  8. while(i<j){
  9. while(number[i]<=number[pivot]&&i<last)
  10. i++;
  11. while(number[j]>number[pivot])
  12. j--;
  13. if(i<j){
  14. temp=number[i];
  15. number[i]=number[j];
  16. number[j]=temp;
  17. }
  18. }
  19. temp=number[pivot];
  20. number[pivot]=number[j];
  21. number[j]=temp;
  22. quicksort(number,first,j-1);
  23. quicksort(number,j+1,last);
  24. }
  25. }
  26. int main(){
  27. int i, count, number[25];
  28. printf("How many elements are u going to enter?: ");
  29. scanf("%d",&count);
  30. printf("Enter %d elements: ", count);
  31. for(i=0;i<count;i++)
  32. scanf("%d",&number[i]);
  33. quicksort(number,0,count-1);
  34. printf("Order of Sorted elements: ");
  35. for(i=0;i<count;i++)
  36. printf(" %d",number[i]);
  37. return 0;
  38. }

输出:

C 中的快速排序程序 - 图1