快速排序

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 

 

以上是关于快速排序的主要内容,如果未能解决你的问题,请参考以下文章

深度解析(十六)快速排序

快速排序

基于快速排序方法改成求第k大的数

简单介绍一下快速排序的思想?

用C语言编程实现快速排序算法

Python实现排序算法之快速排序