快速排序
Posted letlifestop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。
具体思路:
每次找一个基准数来调整数组中的元素,调整完之后i和j相遇的地方,左边都是小于等于基准数的,右边都是大于等于基准数的。
然后递归往下进行,直到只有一个元素
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int MAXSIZE = 100000; 4 int n; 5 int a[MAXSIZE]; 6 void quicksort(int left,int right) 7 int i, j, t, tmp; 8 if(left > right) 9 return ; 10 11 tmp = a[left]; 12 i = left; 13 j = right; 14 while(i != j) 15 while(a[j] >= tmp && i < j) 16 j--; 17 18 while(a[i] <= tmp && i < j) 19 i++; 20 21 if(i < j) 22 swap(a[i], a[j]); 23 24 25 a[left] = a[i]; 26 a[i] = tmp; 27 quicksort(left, i - 1); 28 quicksort(i + 1, right); 29 return ; 30 31 int main() 32 33 int i, j, t; 34 scanf("%d", &n); 35 for(i = 1; i <= n; i++) 36 scanf("%d", &a[i]); 37 38 quicksort(1,n); 39 for(i = 1; i <= n; i++) 40 printf("%d ",a[i]); 41 42 printf("\n"); 43 return 0; 44
以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章