排序算法总结

简介: 排序算法总结


常用算法复杂度分析

                             

 

 

排序算法

1. 快速排序原理

  (1)定义一个基准元素base(我这里定义的是最左面的元素定位基准元素)

  (2)定义两个变量i和j,j先从右向左遍历,找到第一个比base小的数就停止,i再从左向右便利找到第一个比base大的数停止

  (3)交换i和j指向的元素

  (4)直到i和j指向同一个元素,将这个元素与基准元素交换

  递归求解即可

2. 时间复杂度:O(nlogn)

 

public class Qsort {
    public static void main(String[] args) {
        int a[]= {3,4,11,2,0,9,8,5,7};
        Quicksort(a,0,a.length-1);
        for (int i : a) {
            System.out.print(i+" ");
        }    
    }
    private static void Quicksort(int[] a, int left, int right) {    
        if(left>right)
            return;
        int i=left;
        int j=right;
        int base=a[left];
        while(i!=j) {
            while(a[j]>=base&&i<j)
                j--;
            while(a[i]<=base&&i<j)
                i++;
            int temp = a[i];
            a[i]= a[j];
            a[j]= temp;
        }
        a[left]=a[i];
        a[i]=base;
        Quicksort(a,left,i-1);
        Quicksort(a,i+1,right);
    }
}

 

 

原文链接:

https://www.cnblogs.com/minkaihui/p/4077888.html

https://www.cnblogs.com/flyingdreams/p/11161157.html

https://blog.csdn.net/liang_gu/article/details/80627548

 

标签: 算法与数据结构

目录
相关文章
|
5月前
|
搜索推荐 索引
排序算法详解
本文介绍了多种排序算法,包括插入排序(如直接插入排序和希尔排序)、选择排序(如直接选择排序和堆排序)、交换排序(如冒泡排序和快速排序)以及归并排序和计数排序。插入排序通过构建有序序列逐步插入元素;选择排序通过不断选择最小元素放置于序列起始;交换排序通过元素间的交换达到排序目的;归并排序采用分治法将序列分解再合并;计数排序则通过统计元素出现次数来排序。文章详细阐述了各种排序算法的原理及其实现方法。
64 7
|
4月前
|
搜索推荐 Java Go
深入了解选择排序算法
深入了解选择排序算法
39 4
|
8月前
|
搜索推荐 算法 Python
其他常见的排序算法
其他常见的排序算法
|
9月前
|
搜索推荐 C#
C#实现选择排序算法
C#实现选择排序算法
57 2
|
9月前
|
搜索推荐 算法 Shell
排序算法(C/C++)
排序算法(C/C++)
排序算法(C/C++)
|
搜索推荐 算法 Shell
排序算法
排序算法
47 1
|
9月前
|
搜索推荐 算法
常见排序算法实现(二)
常见排序算法实现(二)
68 0
|
搜索推荐 算法
14 排序算法
14 排序算法
38 0
|
算法 搜索推荐
排序算法的简单认识
在进行很多便捷算法之前总是要实现对象的有序化,而这就将使用到排序相关的算法,即使目前诸多高级语言已然完成对于排序算法的封装,用户只需导入对应库文件即可调用排序算法完成排序,无需手写排序算法,但具体的排序算法的选择就必须对于排序算法有所认识。本文就将介绍两个简单的排序算法:选择排序与冒泡排序。 选择排序 为什么称为选择排序? 该算法每次都是对于未排序的关键字进行比较,选择出最小或最大的关键字,再对其交换位置,实现一次排序,需进行多次比较。 选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元
84 0
|
搜索推荐
排序算法总结
经典排序算法总结
76 0