排序算法

Posted

tags:

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

快速排序算法:

通过一次排序将数组分为独立的两部分,一部分均比关键字小,另一部分均比关键字大,再递归对每部分进行关键字排序。

关键字排序:把数组第一个数拿出来做关键字key,数组前后分别设置low,hig指针;将key与hig指针的值从后往前比较,如果key<指针hig的值,hig--,反之交换值;key继续与low指针的值从前往后遍历,若key>指针low的值,low++,反之交换值;直到完成排序。

 1 public class FastOrder {
 2 
 3     public static void main(String[] args) {
 4         FastOrder p=new FastOrder();
 5         int[] arr={45,1,6,8,65,26,46,22};
 6         p.fastsort(arr, 0, arr.length-1);
 7         for(int i=0;i<arr.length;i++){
 8             System.out.print(arr[i]+" ");
 9         }
10     }
11     /*关键字key排序*/
12     public int partition(int[] arr, int low, int hig){
13         int key=arr[low];//选数字第一个数为关键字
14         while(low<hig){
15             while(low<hig&&arr[hig]>key){
16                 hig--;
17             }
18             arr[low]=arr[hig];
19             while(low<hig&&arr[low]<key){
20                 low++;
21             }
22             arr[hig]=arr[low];
23         }
24         arr[low]=key;
25         return low;
26     }
27     /*递归完成快速排序*/
28     public void fastsort(int[] arr,int low, int hig){
29         if(low<hig){
30             int mid=partition(arr,low,hig);
31             fastsort(arr, low,mid-1);
32             fastsort(arr,mid+1,hig);
33         }
34     }
35 }

 

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

算法排序之堆排序

快速排序-递归实现

从搜索文档中查找最小片段的算法?

在第6731次释放指针后双重免费或损坏

TimSort算法分析

以下代码片段的算法复杂度