排序算法总结

简介: 排序算法总结


常用算法复杂度分析

                             

 

 

排序算法

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

 

标签: 算法与数据结构

目录
打赏
0
10
11
1
77
分享
相关文章
常见的7种排序算法(转载)
本文介绍了七种常见的排序算法:冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序和堆排序。每种算法通过具体步骤和代码实现进行详细讲解,包括时间复杂度分析。文中提供了丰富的示例代码和图解,帮助读者更好地理解各排序算法的工作原理及应用场景。
91 16
|
10月前
|
常见排序算法实现(二)
常见排序算法实现(二)
78 0
TimSort——最快的排序算法
TimSort 算法是 Tim Peters 于 2001 年为 Python 语言创建的。该算法建立在插入排序和归并排序的基础之上,兼具插入排序和归并排序的优点。TimSort 的平均时间复杂度为 O(nlog(n)) ,最好情况 O(n) ,最差情况 O(nlog(n)) 。空间复杂度 O(n) ,是一个稳定的排序算法。
1754 0
TimSort——最快的排序算法
常见排序算法详解(1)
前言 排序是我们在日常生活和工作中常见的一种操作。在计算机科学中,排序算法就是将一串或一组数据按照特定的顺序进行排列的算法。这些顺序可能是数字的升序或降序,也可能是字母或字词的字母顺序等。我们将探讨几种不同的排序算法,包括他们的原理、优缺点以及代码实现。
176 0
排序算法的简单认识
在进行很多便捷算法之前总是要实现对象的有序化,而这就将使用到排序相关的算法,即使目前诸多高级语言已然完成对于排序算法的封装,用户只需导入对应库文件即可调用排序算法完成排序,无需手写排序算法,但具体的排序算法的选择就必须对于排序算法有所认识。本文就将介绍两个简单的排序算法:选择排序与冒泡排序。 选择排序 为什么称为选择排序? 该算法每次都是对于未排序的关键字进行比较,选择出最小或最大的关键字,再对其交换位置,实现一次排序,需进行多次比较。 选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元
105 0