快速排序算法模板

快速排序模板1

//最后j会在i的前面或者和i相遇
public void quickSort(int[]q,int l,int r){
    if(l>=r) return;
    int i = l-1,j=r+1,x = q[l];
    while(i<j){
        while(q[i++]<x);
        while(q[j--]>x);
        if(i<j){
            int temp = q[i];
            q[i] = q[j];
            q[j] =  temp;
        }
    }
    quickSort(q,l,j);
    quickSort(q,j+1,r);
}

快速排序模板2

public void quickSort(int[]q,int l,int r){
    if(l>=r) return;
    int i = l, j = r, x = q[l];
    while(i < j){
        while(i<j&&x<=q[j]){
            j--;
        }
        q[i] = q[j];
        while(i<j&&x>q[i]){
            i++;
        }
        q[j] = q[i];
    }
    q[j] = x;
    quickSort(q,l,i);
    quickSort(q,i+1,j);
}

对快速排序算法的主要总结

时间复杂度:
最好情况:O(nlogn)
最坏情况:O(n2)
平均情况:O(nlogn)
空间: O(logn)~O(n)
稳定性:是基于交换的,不稳定

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 十大基础排序算法。 Basic-Sorting-Algorithm 关于十大基本排序算法的整理。 十大排序算法分别...
    一剑孤城阅读 7,736评论 1 6
  • 2018年10月8日 /*本节主要内容:1、 时间复杂度2、冒泡排序3、选择排序4、插入排序5、对数器概念和使用6...
    须臾之北阅读 4,136评论 0 0
  • 通过前面的知识,我们已经知道,有序的数据在查找时有极大的性能提升。很多查找都基于有序数据,但并不是所有的结构都能像...
    大大纸飞机阅读 4,900评论 0 1
  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 14,223评论 6 19
  • 2016年对我的衣橱进行了一次全面的总结与反思。在这个总结与反思,真的很有意思改变我对服装的理解及对美的理解。 从...
    杨美娟阅读 4,560评论 0 3