C语言快速排序代码
- #include <stdio.h>
- #define N 100010
- int n = 0;
- int a[N];
-
- void paixu(int a[], int left, int right)
- {
- if(left >= right) //如果指针相遇说明排完本轮,则开始返回递归
- {
- return;
- }
- int i = left - 1;
- int j = right + 1;
- int mid = a[(left + right)/2];
- while(i < j)
- {
- do
- {
- i++; //防止死循环
- }while(a[i] < mid);
-
- do
- {
- j--;
- }while(a[j] > mid);
-
- if(i < j)
- {
- int temp = a[i];
- a[i] = a[j];
- a[j] = temp;
- }
- }
-
- paixu(a,left,j);
- paixu(a,j+1,right);
-
- }
-
- int main()
- {
- scanf("%d",&n);
- for(int i = 0; i < n; i++) //输入
- {
- scanf("%d",&a[i]);
- }
-
- paixu(a,0,n-1);
-
- for(int i = 0; i < n; i++) //输出
- {
- printf("%d ",a[i]);
- }
-
- return 0;
-
- }