快速排序的基本思想与代码实现

客官°小女子只卖身不卖艺 2022-05-29 08:41 256阅读 0赞

快速排序的基本思想与代码实现

一、思想

1,先选一个“标尺”,我们通常选左边第一个
2,用它把整个队列过一遍筛子,
3,以保证:其左边的元素都不大于它,其右边的元素都不小于它。
4,这样,排序问题就被分割为两个子区间。

5,再分别对子区间排序就可以了。

二、代码

C++ Code











1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54





#include <stdio.h>




void swap(
int a[], 
int i, 
int j)

{

    
int t = a[i];

    a[i] = a[j];

    a[j] = t;

}




int partition(
int a[], 
int p, 
int r)

{

    
int i = p;

    
int j = r + 
1;

    
int x = a[p];

    
while(
1)

    {

        
while(i < r && a[++i] < x); 
///从左边找比标尺大的数
        
while(a[—j] > x);        
///从右边找比标尺小的数
        
if(i >= j)      
///当两个位置相等,表示已经全部找完
            
break;

        swap(a, i, j);

    }



    
///扫描完成,枢轴到位
    swap(a, p, j);

    
return j;

}




///递归过程

void quicksort(
int a[], 
int p, 
int r)

{

    
if(p < r)

    {

        
int q = partition(a, p, r);

        quicksort(a, p, q - 
1);

        quicksort(a, q + 
1, r);

    }

}




int main()

{

    
int i;

    
int a[] = {
5
13
6
24
2
8
19
27
6
12
1
17};

    
int N = 
12;



    quicksort(a, 
0, N - 
1);



    
for(i = 
0; i < N; i++)

        printf(
“%d ”, a[i]);

    printf(
“\n”);



    
return 
0;

}


发表评论

表情:
评论列表 (有 0 条评论,256人围观)

还没有评论,来说两句吧...

相关阅读

    相关 快速排序思想实现

    1、快速排序的思想 快速排序就是给基准数据找在数组中正确位置的过程,一旦基准位置的正确位置找到,那基准位置左右两边经过同样的步骤递归也可以有序,最终整体数组有序。 整

    相关 冒泡排序基本思想

    1.冒泡排序的基本思想 冒泡排序是交换排序中一种简单的排序方法。 它的基本思想是对所有相邻记录的关键字值进行比效,如果是逆顺(a\[j\]>a\[j+1\]),则将其交换,最