

各种排序算法时间复杂度和空间复杂度表
source link: https://itimetraveler.github.io/2015/11/03/%E5%90%84%E7%A7%8D%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95%E6%97%B6%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E5%92%8C%E7%A9%BA%E9%97%B4%E5%A4%8D%E6%9D%82%E5%BA%A6%E8%A1%A8/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

各种排序算法时间复杂度和空间复杂度表
各种排序算法时间复杂度和空间复杂度表:
各种排序算法时间复杂度和空间复杂度表
比较时间复杂度函数的情况如下图:
比较时间复杂度函数的情况
对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法:
所以对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。
接下来博主抽时间要整理一下各经典算法思想和心得,敬请期待
一、快速排序(Quicksort)
import java.util.Arrays;
public class MySort {
public static void main(String args[]){
int[] array = {5,3,9,1,6,4,10,2,8,7};
System.out.println("Before: " + Arrays.toString(array));
new MySort().quickSort(array, 0, array.length-1);
System.out.println("After: " + Arrays.toString(array));
}
/**
* 快速排序: 递归实现的挖坑填数法
* @param array
* @param left
* @param right
*/
private void quickSort(int[] array, int left, int right){
if(left >= right){
return;
}
int i = left;
int j = right;
int key = array[left];
while(i<j){
while(array[j] >= key && i<j){ //从后向前搜索,比key小的值就挖出来填到i处的坑
j--;
}
array[i] = array[j];
while(array[i] <= key && i<j){ //从前向后搜索,找出比key大的值填到刚才j处空缺的坑
i++;
}
array[j] = array[i];
}
array[i] = key; //把key回填到数组的空缺处
System.out.println("Sort: " + Arrays.toString(array));
quickSort(array, left, i-1);
quickSort(array, i+1, right);
}
}
快速排序的测试代码输出结果如下:
Before: [5, 3, 9, 1, 6, 4, 10, 2, 8, 7]
Sort: [2, 3, 4, 1, 5, 6, 10, 9, 8, 7]
Sort: [1, 2, 4, 3, 5, 6, 10, 9, 8, 7]
Sort: [1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
Sort: [1, 2, 3, 4, 5, 6, 10, 9, 8, 7]
Sort: [1, 2, 3, 4, 5, 6, 7, 9, 8, 10]
Sort: [1, 2, 3, 4, 5, 6, 7, 9, 8, 10]
Sort: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
After: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
【参考资料】:
Recommend
-
50
点击蓝色“ 乔志勇笔记 ”关注我哟 加个“ 星标 ”,第一时间获取推送...
-
42
1. 博客背景 今天有同事在检查代码的时候,由于函数写的性能不是很好,被打回去重构了,细思极恐,今天和大家分享一篇用js讲解的时间复杂度和空间复杂度的博客 2. 复杂度的表示方式 之前有看过的,你可能...
-
20
目录 一、时间复杂度:执行算法所需要的计算工作量 (一)时间复杂度的理解 2.(渐进)时间复杂度定义 (二)时间复杂度的计算
-
17
本文是覃超老师的《算法训练营》的学习笔记,此笔记的内容包含了学习后的个人记录、个人总结、理解和思想。从而更好的学习算法。 前言 学习任何一门知识的时...
-
11
交换排序 一:冒泡排序 交换排序的定义: 交换交换,换的是两个元素的位置,根据序列中,两个元素关键字的比较结果,对两个元素在序列中的位置进行交换。 交换排序,最常见的就是冒泡排序和...
-
13
关注公众号「五分钟学算法」,回复关键字 算法,获取谷歌工程师的 LeetCode 算法笔记。...
-
5
针对某一类问题的解决,我们可能需要借助算法来实现,实现的手段也可能是各式各样的。虽然最终都解决了问...
-
5
作为一名“程序猿”,大家应该都听过这么一句话:程序=数据结构+算法。 这句话是由瑞士计算机科学家尼古拉斯·沃斯(Niklaus Wirth)在 1984 年获得图灵奖时说的一句话,这位大佬还以这句话为名出了一本书《Algorithms + Data Structures=Programs》,从此...
-
18
数组排序算法的复杂度 2...
-
4
算法的时间、空间复杂度如何比较? 精选 原创 一、时间复杂度BigO
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK