排序算法性能比较


算法思路


排序算法


时间复杂度


最好情况


最坏情况


空间复杂度


稳定性


插入排序


直接插入


O(n2)


O(n)


O(n2)


O(1)



希尔排序


O(n(logn)2)


 

 

O(1)



交换排序


冒泡排序


O(n2)


O(n)


O(n2)


O(1)



快速排序


O(nlogn)


O(nlogn)


O(n2)


O(logn)



选择排序


直接选择


O(n2)


O(n2)


O(n2)


O(1)



堆排序


O(nlogn)


O(nlogn)


O(nlogn)


O(1)



归并排序


归并排序


O(nlogn)


O(nlogn)


O(nlogn)


O(n)


不稳定的排序算法有:快、希、选、堆。(记忆:找到工作就可以“快些选一堆”美女来玩了(并不能))

时间: 2024-10-13 21:49:51

排序算法性能比较的相关文章

数据结构实践——大数据集上排序算法性能的体验

本文是针对[数据结构基础系列(9):排序]的实践项目. [项目 - 大数据集上排序算法性能的体验] 设计一个函数,产生一个至少5万条记录的数据集合.在同一数据集上,用直接插入排序.冒泡排序.快速排序.直接选择排序.堆排序.归并排序.基数排序等算法进行排序,记录所需要的时间,经过对比,得到对复杂度不同的各种算法在运行时间方面的感性认识. 提示1:这一项目需要整合多种排序算法,可以考虑先建设排序算法库,作为我们这门课算法库的收官之作: 提示2:本项目旨在获得对于复杂度不同算法的感性认识,由于数据分布

各种排序算法性能比较

插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用插入. 设定插入数和得到已经排好序列的最后一个数的位数.insertNum和j=i-1. 从最后一个数开始向前循环,如果插入数小于当前数,就将当前数向后移动一位. 将当前数放置到空着的位置,即j+1. 代码实现如下: package zhouls.bigdata.DataFeatureSelection; import jav

转:5种排序算法性能比较总结

1 概述 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序.插入排序.归并排序.希尔排序.快速排序等.算法性能比较如下图所示: 2 选择排序 选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个第二小的元素作为有序序列中的第2个元素并将它定位在第二号存储位置,依此类推,当第n-1趟处理从数据序列的剩下的2个元素中选择一个较小的元素作为有序序列中

排序算法大集锦_各种排序算法性能比较

对10000个1-10000的随机数进行排序,并显示出运行时间 数组是用以前用VC++&MatLab生成的,比较长...哈哈,感受一下计算机的速度! #include <stdio.h> #include <string.h> #include <stdlib.h> #include <limits.h> #include <malloc.h> #include <time.h> int a[10000]={ 5282,330

排序算法性能及选择总结

排序法 平均时间 最坏情况 最好情况 稳定度 额外空间 备注 直接插入 O(n2) O(n2) O(n) 稳定 O(1) 大部分已排序时较好(简单) 希尔 O(nlogn) O(nlogn) 与步长相关 不稳定 O(1) n小时较好(较复杂) 冒泡 O(n2) O(n2) O(n) 稳定 O(1) n小时较好(简单) 快排 O(nlogn) O(n2) O(nlogn) 不稳定 O(logn) n大时较好,基本有序时反而不好(较复杂) 直接选择 O(n2) O(n2) O(n2) 不稳定 O(1

常见的排序算法性能对比

排序法 平均时间 最差情形 稳定度 额外空间 备注 冒泡 O(n2) O(n2) 稳定 O(1) n小时较好 交换 O(n2) O(n2) 不稳定 O(1) n小时较好 选择 O(n2) O(n2) 不稳定 O(1) n小时较好 插入 O(n2) O(n2) 稳定 O(1) 大部分已排序时较好 基数 O(logRB) O(logRB) 稳定 O(n) B是真数(0-9), R是基数(个十百) Shell O(nlogn) O(ns) 1<s<2 不稳定 O(1) s是所选分组 快速 O(nlo

排序算法系列之八大排序算法性能比较-从实验结果分析

回顾各大排序算法的实现代码: #include "stdafx.h" #include <iostream> #include <time.h> #include <vector> using namespace std; template<class T> void BubbleSort(T *x, const int N) { for(int k= N-1; k>0 ;k--) { for(int i=0; i<k; i+

Java中的数据结构及排序算法

(明天补充) 主要是3种接口:List Set Map List:ArrayList,LinkedList:顺序表ArrayList,链表LinkedList,堆栈和队列可以使用LinkedList模拟 Set:HashSet没有重复记录的集合 Map:HashMap就是哈希表 Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakHashMap 数据结构参考链接

[Data Structure] 八大排序算法

排序有内部排序和外部排序之分,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存.我们这里说的八大排序算法均为内部排序. 下图为排序算法体系结构图: 1. 直接插入排序(Straight Insertion Sort ) 基本思想:将待排序的无序数列看成是一个仅含有一个元素的有序数列和一个无序数列,将无序数列中的元素逐次插入到有序数列中,从而获得最终的有序数列. 算法流程: 1)初始时, a[0]自成一个有序区, 无序区为a[1