码迷,mamicode.com
首页 > 编程语言 > 详细

常见排序算法——快速排序

时间:2020-04-02 01:31:34      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:时间复杂度   public   执行   序列   int   default   复杂度   nbsp   color   

快速排序核心就是分治法,通过划分将待排序的序列分成前后两部分,其中前一部分的数据都比后一部分的数据要小,然后再递归调用函数对两部分的序列分别进行快速排序,以此使整个序列达到有序,其时间复杂度为O(nlogn)。该算法步骤如下:

1、从序列中任选一个数作为基准数,一般就使用第一个数;

2、分区,将大于基准得数房右边,小于基准得数放左边,注意一定要先右后左;

3、对左右区间分别执行1、2步骤,直到每个区间只有一个数为止。

public void sort(int leftLimit, int rightLimit, int[] nums){
  int i = leftLimit;
  int j = rightLimit;
  int mid = nums[i];
  while(i<j){
    while(i<j&&nums[j]>mid){
      j--;
    }
    if(i<j){
      nums[i++]=nums[j];
    }
    while(i<j&&nums[i]<mid){
      i++;
    }
    if(i<j){
      nums[j--]=nums[i];
    }
  }
  nums[i]=mid;
  if(leftLimit<i-1){
    sort(leftLimit, i-1, nums);
  }
  if(i+1<rightLimit){
    sort(i+1, rightLimit, nums);
  }
}

 

常见排序算法——快速排序

标签:时间复杂度   public   执行   序列   int   default   复杂度   nbsp   color   

原文地址:https://www.cnblogs.com/blackwatch1206/p/12617084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!