排序算法总结

简介: 排序算法总结


常用算法复杂度分析

                             

 

 

排序算法

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

 

标签: 算法与数据结构

目录
相关文章
|
7月前
|
搜索推荐 算法 数据处理
C++中的排序算法
C++中的排序算法
59 0
|
搜索推荐 C++
89 C++ - 常用排序算法
89 C++ - 常用排序算法
40 0
|
搜索推荐 Java C++
简单介绍排序算法
简单介绍排序算法
50 0
|
算法 搜索推荐
排序算法的简单认识
在进行很多便捷算法之前总是要实现对象的有序化,而这就将使用到排序相关的算法,即使目前诸多高级语言已然完成对于排序算法的封装,用户只需导入对应库文件即可调用排序算法完成排序,无需手写排序算法,但具体的排序算法的选择就必须对于排序算法有所认识。本文就将介绍两个简单的排序算法:选择排序与冒泡排序。 选择排序 为什么称为选择排序? 该算法每次都是对于未排序的关键字进行比较,选择出最小或最大的关键字,再对其交换位置,实现一次排序,需进行多次比较。 选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元
79 0
|
搜索推荐 算法 测试技术
|
搜索推荐 算法
常见的排序算法(下)
上期学习完了前四个排序,这期我们来学习剩下的三个排序:
常见的排序算法(下)
|
搜索推荐 算法
排序算法详解
排序算法详解
165 0
排序算法详解
|
搜索推荐 Java
常用排序算法总结
在计算器科学与数学中,一个排序算法(英语:Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序和归并排序,分别使用Java代码实现,简要使用图例方式介绍其实现原理。
6793 0
|
搜索推荐 算法
世界上最漂亮的排序算法!
直奔主题,世界上“最漂亮”的排序算法。 void stooge_sort(int arr[], int i, int j){          if (arr[i]>arr[j]) swap(arr[i], arr[j]);          if (i+1>=j) return;        .
1301 0
|
机器学习/深度学习 算法 搜索推荐