快速排序

Posted had1314

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速排序相关的知识,希望对你有一定的参考价值。

 1 递归:调用自己的方法
 2 递归三原则:1.封装一个独立的方法
 3 2.递归一定要有出口(结束条件)
 4 3.符合一定的规律
 5 
 6 斐波拉契  1 1 2 3 5 8 13 21 ..........
 7 //        int n1=1,n2=1;
 8 //        int sum=0;
 9 //        for(int i=2;i<8;i++) 
10 //            sum=n1+n2;
11 //            n1=n2;
12 //            n2=sum;
13 //        
14 //        System.out.println(sum);
15 //    System.out.println(new Fbl().fb(8));
16 递归做法:
17 //    public int fb(int a) 
18 //        if(a==1||a==2) 
19 //            return 1;
20 //        else 
21 //            return fb(a-1)+fb(a-2);
22 //        
23 //    
24 快速排序
25 
26 
27 陆军成 2019/7/31 19:21:46
28 
29 public class QuickSort 
30 public static void quickSort(int[] arr, int left, int right) 
31 int pivot = 0; //基准点
32 if (left < right) 
33 pivot = partition(arr, left, right);//得到基准点
34 quickSort(arr, left, pivot - 1);//左子序列排序
35 quickSort(arr, pivot + 1, right);//右子序列排序
36 
37 
38 
39 
40 private static int partition(int[] arr, int left, int right) 
41 int key = arr[left];//选取第一个元素为基准元素 left指向数列的最左部,right指向数据的最右部
42 while(left < right) 
43 while(left < right && arr[right] >= key) //如果arr[right]>=key,将right--,直到arr[right]遇到比key小的值为止
44 right--;
45 
46 arr[left] = arr[right];//将arr[right]这个比key小的数放到左边去
47 while(left < right && arr[left] <= key) //拿arr[left]与key进行比较,如果arr[left]<key则将left++
48 left++;  //然后再进行arr[left]与key的比较,直到遇到arr[left]>=key的值为止
49 
50 arr[right] = arr[left];//将arr[left]这个比key大的数放到右边
51 
52 arr[left] = key;//当left与right相等时退出while循环,key的值赋给当前left与right相等的位置,
53 //得到一个以key基准的数列,左子数列的元素都比key的值小,右子数列都比key的值大
54 return left;//返回新基准点的下标
55 
56 

 

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

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

快速排序

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

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

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

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