//快速排序算法
  1 #include <stdio.h>
  2
  3 int max(int arr[], int L, int R) { //排序函数 arr排序数组 L数组最左边 R数组最右边
  4
         int i,j,k,t;
  5
         k = arr[(L+R) / 2];
  6
         i = L;
  7
         j = R;
  8
         while (i <= j) {
  9
                 while (arr[i] < k) { //i 右移找大于k的值
 10
                         i++;
 11
                 }
      
 12
                 while (arr[j] > k) { //j 左移找小于k的值
 13
                         j--;
 14
                 }
      
 15
                 if (i <= j) {
 16
                         //交换 arr[i] 与 arr[j] 的值
 17
                         t
       = arr[i];
 18
                         arr[i]
  = arr[j];
 19
                         arr[j]
  = t;
 20
                         i++; //i 右移一位 下次循环从 arr[i+1] 开始找
 21
                         j--; //j 左移一位 下次循环从 arr[j--] 开始找
 22
                 }
      
 23
         }
      
 24
         if (L < j) {
 25
                 max(arr, L, j);
 26
         }
      
 27
         if (i < R) {
 28
                 max(arr, i, R);
 29
         }
      
 30 }
      
 31
 32 int main() {
 33
         int arr[10] = {3, 10, 9, 7, 5, 4, 6, 2, 8, 1}; //初始化乱序1~10数组值
 34
         int i;
 35
         max(arr, 0, 9); //调用排序
 36
         for (i = 0; i < 10; i++) {
 37
                 printf("%d\n", arr[i]); //输出排序后数组
 38
         }
 39
 40
         return 0;
 41 }