QuickSort

quickSort.gif
package algorithm.sort;

import java.util.List;

import static java.util.Collections.swap;

public class QuickSort {

    /**
     * Sorts the given List in place
     * @param list the list to sort.Throws an error if its null
     */
    public void sort(List<Integer> list){
        if(list == null){
            throw new IllegalArgumentException("List is empty!");
        }
        quicksort(list,0,list.size() -1);
    }

    private void quicksort(List<Integer> list, int left, int right) {
        if(left >= right){
            return;
        }
        int pivot = list.get(left + (right - left)/2);
        int partitionPoint = partition(list,left,right,pivot);
        quicksort(list,left,partitionPoint - 1);
        quicksort(list,partitionPoint,right);
    }

    private int partition(List<Integer> list, int left, int right, int pivot) {
        while(left <= right){
            while(list.get(left) < pivot){
                left ++;
            }
            while (list.get(right) > pivot){
                right --;
            }
            if(left <= right){
                swap(list,left,right);
                left++;
                right--;
            }
        }
        return left;
    }


}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 3,918评论 2 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 1,410评论 0 6
  • 让自己变得更好,是解决一切问题的关键 很多人会迷茫,会焦虑,会看不见未来的方向,看不见前行的曙光,在黑暗里苦苦挣扎...
    火然开朗阅读 291评论 0 4