手撕代码(一)快速排序

去美团面试,面试我的汪哥,感觉很有眼缘,人不错,只是自己功力不到,问了我在一般情况下的排序算法的效率问题,一般情况下排序算法的效率从高到低是这样的:快速排序>归并排序>堆排序>插入排序>冒泡排序,我在接下来的几天会把几种算法实现一下。实现我们来看快速排序算法。

快排在待排序数组基本有序的情况下是最糟的时间复杂度为O(n^2),一般情况下的平均复杂度为O(logn),快速排序算法的原理我就不介绍了,自己在纸上画画就可以啦,大家本科都学过数据结构,原理通晓,编码才会so easy。如果大家非要看原理百度百科,点这里,附带各种语言实现。话不多少,直接代码:

public class Sort{
    public static void main(String[] args){
         int[] arr = {4,3,6,1,5,2};
         ksSort(arr,0,arr.length-1);
         System.out.println(Arrays.toString(arr));
    }
    private static void ksSort(int[] a,int low,int high){
        if(low=base){ 
                    high--; 
                 }
                swap(a,low,high); 
                while(low
 OVER...   待续。。。

你可能感兴趣的:(Java&笔试)