快速排序

简介: 快速排序

快速排序

介绍:通过多次划分实现操作

思想:每一趟选择当前说有子序列中的一个关键字(通常是第一个)作为枢轴,将子序列中比枢轴小的移到枢轴前边,比枢轴大的移到枢轴后边;当本趟所有子序列都被枢轴以规则划分完毕后会得到一组更短的子序列,它们成为下一趟划分的初始序列集

int quicksort(int R[],int low,int high)
{
  int temp;
  int i=low,j=high;
  if(low<high)
  {
    temp=R[low];
    while(i<j)
    {
      while(j>i&&R[j]>=temp)
      {
        --j;//右往左扫描 ,找第一个小于temp的 
      }
      if(i<j)
      {
        R[i]=R[j];//第一个比temp小的放在temp的左边 
        ++i;//低位i后移1位 
      } 
      while(i<j&&R[i]<temp)
      {
        ++i;//从左往右扫描 ,找到第一个比temp大的 
      }
      if(i<j)
      {
        R[j]=R[i];//第一个比temp大的放在temp右边 
        --j;//高位j前移1位 
      } 
    }
    R[i]=temp;
    quicksort(R,low,i-1);
    quicksort(R,i+1,high); 
    //直到i遇到j之后结束,划分为不同的分区
  }
  return 1;
}

分治法: 快速排序采用分为治之。

最坏的时间复杂度O(n2) ——这里是平方

最好的时间复杂度O(n*long2n) ——这是以2为底取n的对数

目录
相关文章
快速排序
快速排序。
118 35
|
8月前
|
搜索推荐 C++
C++快速排序的实现
C++快速排序的实现
|
8月前
|
算法
快速排序(三)——hoare法
快速排序(三)——hoare法
84 1
|
C++
C++快速排序
C++快速排序
62 1
|
人工智能 搜索推荐
【快速排序】
【快速排序】
重新理解快速排序
重新理解快速排序
62 0
|
机器学习/深度学习
785. 快速排序
785. 快速排序
74 0
【1. 快速排序】
思路: > 1. 确定分界点:q[l] , q[(1 + r)/2] , q[r] , 随机 > 2. 调整区间的范围:使得在`分界点左侧是数都<= x`, `分界点右侧的数都>= x `(`重点处理`)
95 0
【1. 快速排序】