排序算法对比


名称


稳定性


时间复杂度


空间复杂度


描述


数据对象为链表


平均


最坏


冒泡排序


Y


O(n^2)


O(1)


无序区,有序区。


 


选择排序


 


O(n^2)


O(1)


有序区,无序区


稳定性Y,其它同数组


插入排序


Y


O(n^2)


O(1)


有序区,无序区


同数组


堆排序


 


O(n log n)


O(1)


最大堆,有序区


 


归并排序


Y


O(n log n)


O(n)+O(log n)


将数据分为两段,逐段排序


空间复杂度O(1)


快速排序


 


O(n log n)


O(n^2)


O(log n)-O(n)


选择基数,调整方位


 


希尔排序


 


O(n log n)


O(n^2)


O(1)


每次循环按间隔进行插入排序


 

快速排序针对小数目数组列表的优化为最佳的排列方法。

时间: 2024-11-06 07:29:17

排序算法对比的相关文章

排序算法系列——八大排序算法对比分析

本系列最后一篇,综合分析下前面介绍的八种排序算法的效率,以及各自的适用情况. 下面先看看八种排序算法的时间复杂度表格: 图中八种排序被分成了两组,一组时间复杂度为O(n^2),另一组相对高效些. 下面先对第一组O(n^2)的四种排序算法进行对比,分别取数组长度为100,1000,10000,100000四个数量级,各个元素在0-10000000之间随机获取.下面看下结果的分析. 排序算法 长度=100 长度=1000 长度=10000 长度=100000 直接插入排序 535 2,198 135

『算法设计_伪代码』线性时间排序及排序算法对比

一.计数排序 二.基数排序 三.桶排序 四.对比不同排序方法 原文地址:https://www.cnblogs.com/hellcat/p/9255591.html

排序算法对比,步骤,改进

图片镇楼 插入排序(InsertSort) 步骤: 1.依次选择一个待排序的记录, 2.依次与已经排好序的有序序列比较,并插入 3.持续每次对越来越少的元素重复上面的步骤,直到插完所有元素为. 改进: 二分插入排序,直接和有序序列的中间比较. 希尔排序. 希尔排序(又叫缩小增量排序,ShellSort) 步骤: 1.先将整个待排元素序列分割成若干个子序列 2.分别进行插入排序 3.然后依次缩减增量再进行插入排序 4.待整个序列中的元素基本有序(增量足够小)时,再对全体元素进行一次插入排序 冒泡排

常用排序算法比较与分析

一.常用排序算法简述 下面主要从排序算法的基本概念.原理出发,分别从算法的时间复杂度.空间复杂度.算法的稳定性和速度等方面进行分析比较.依据待排序的问题大小(记录数量 n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:[内排序].[外排序]. 内排序:指排序时数据元素全部存放在计算机的随机存储器RAM中. 外排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中还需要对外存进行访问的排序过程. 先了解一下常见排序算法的分类关系(见图1-1) 图1-1 常见排

各种排序算法整理

1.插入排序 void InsertSort(int *a, int n) { for(i = 1; i < n; i++) { k = a[i]; for(j = i; k < a[j-1] && j > 0; j--) a[j] = a[j - 1]; a[j] = k; } } 2.冒泡排序 void BubbleSort(int *a, int n) { for(i = 0; i < n; i++) { for(j = 0; j < n - i; j+

第六章 常见排序算法

上章回顾 二叉树的定义 树深度的定义 什么样的二叉树是满二叉树 中序遍历的规则 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorithm-Analysis-in-C.git 第六章 第六章 常见排序算法 常见排序算法 [email protected]:Kevin-Dfg/[email protected]:Kevin-Dfg/Data-Structures-and-Algorith

排序算法比较与分析

一.常用排序算法简述 下面主要从排序算法的基本概念.原理出发,分别从算法的时间复杂度.空间复杂度.算法的稳定性和速度等方面进行分析比较.依据待排序的问题大小(记录数量  n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:[内排序].[外排序]. 内排序:指排序时数据元素全部存放在计算机的随机存储器RAM中. 外排序:待排序记录的数量很大,以致内存一次不能容纳全部记录,在排序过程中还需要对外存进行访问的排序过程. 先了解一下常见排序算法的分类关系(见图1-1) 图1-1 常见

十大排序算法(原理及代码实现细节)

本文参考一些书籍啊哈算法,数据结构与算法(清华大学),已经一些网上的博客 然后动图也是从网上偷来的(^_^),代码实现我尽量用大家容易懂的方式实现 数组居多,然后,桶排序(是别人代码,不过写的不完全正确后面会更新),都是学习嘛 有误的地方,还望各位指正,希望对你有帮助(其实很灵活的,在运用上),也不要这样就满足了 多多地运用,会使理解更深的. 按上面的顺序来吧 原理在代码里直接上动图吧 冒泡排序动图演示 冒泡排序代码实现 1 #include<iostream> 2 #include<c

算法学习-排序算法

数据结构-算法复杂度 时间复杂度 事件频度 一个算法花费的时间与算法种语句的执行次数成正比,哪个算法种语句执行次数多,它花费时间就多. 一个算法中的语句执行次数称为语句频度或时间频度.记为T(n) eg:计算1-100的和 方法一:for循环 T(n) = n + 1 方法二:直接计算 T(n) = 1 时间复杂度 一般情况下,算法中的基本操作语句的重复执行次数时问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n) / f(n) 的极限值为不等于0的常