首页 > 代码库 > 快速排序

快速排序

 1 #include <bits/stdc++.h> 2  3 using namespace std; 4  5 int num[105]; 6  7 void quick_sort(int left, int right) 8 { 9 10     int i, j, temp;11     if(left > right)12         return;13     temp = num[left];//始终以当前最左边的数作为基准数14     i = left;15     j = right;16     while(i != j)17     {18         //右哨兵从右往左找19         while(num[j] >= temp && i  < j)20             j--;21         //左哨兵从左往右找22         while(num[i] <= temp && i < j)23             i++;24         //当找到符合条件的两个数,交换两个数在数组中的位置25         if(i < j)26         {27             num[i] ^= num[j];28             num[j] ^= num[i];29             num[i] ^= num[j];30         }31     }32 33     //基准数归位34     num[left] = num[i];35     num[i] = temp;36 37     quick_sort(left, i-1);//递归处理左边38     quick_sort(i+1, right);//递归处理右边39 }40 41 //测试函数42 int main()43 {44         int i, n;45         scanf("%d",&n);46         for(i = 1; i <= n; i++)47             scanf("%d", &num[i]);48         quick_sort(1, n);49         for(i = 1; i <= n; i++)50             printf("%-5d", num[i]);51 52     return 0;53 }

 

快速排序