常用数据结构和算法操作效率的对比总结

前面介绍了经典的数据结构和算法,这一节我们对这些数据结构和算法做一个总结,具体细节,请参见各个章节的详细介绍,这里我们用表格来呈现它们的效率。

1. 数据结构部分

数据结构中常用的操作的效率表


通用数据结构


查找


插入


删除


遍历


数组


O(N)


O(1)


O(N)



有序数组


O(logN)


O(N)


O(N)


O(N)


链表


O(N)


O(1)


O(N)



有序链表


O(N)


O(N)


O(N)


O(N)


二叉树


O(logN)


O(logN)


O(logN)


O(N)


二叉树(最坏)


O(N)


O(N)


O(N)


O(N)


红黑树


O(logN)


O(logN)


O(logN)


O(N)


2-3-4树


O(logN)


O(logN)


O(logN)


O(N)


哈希表


O(1)


O(1)


O(1)



专用数据结构




O(1)


O(1)



队列



O(1)


O(1)



优先级队列



O(N)


O(1)



优先级队列(堆)



O(logN)


O(logN)

2. 排序算法

常见的排序算法比较表


排序


平均情况


最好情况


最坏情况


稳定与否


空间复杂度


冒泡排序


O(N2)


O(N)


O(N2)


稳定


1


选择排序


O(N2)


O(N2)


O(N2)


不稳定


1


插入排序


O(N2)


O(N)


O(N2)


稳定


1


希尔排序


O(NlogN)


(依赖于增量序列)


不稳定


1


快速排序


O(NlogN)


O(NlogN)


O(N2)


不稳定


O(logN)


归并排序


O(NlogN)


O(NlogN)


O(NlogN)


稳定


O(N)


二叉树排序


O(NlogN)


O(NlogN)


O(N2)


稳定


O(N)


堆排序


O(NlogN)


O(NlogN)


O(NlogN)


不稳定


1


拓扑排序


O(N+E)





O(N)

以上是对经典数据结构和算法部分的一个总结,如有错误之处,欢迎留言指正~

_____________________________________________________________________________________________________________________________________________________

-----乐于分享,共同进步!

-----更多文章请看:http://blog.csdn.net/eson_15

时间: 2024-12-26 20:00:30

常用数据结构和算法操作效率的对比总结的相关文章

常用数据结构及算法C#实现

常用数据结构及算法C#实现 1.冒泡排序.选择排序.插入排序(三种简单非递归排序) 1 int[] waitSort = { 1,0, 12, 13, 14, 5, 6, 7, 8, 9, 10 }; 2 3 //冒泡排序 4 int length = waitSort.Length; 5 6 for (int i = 0; i < length; i++) 7 { 8 for (int j = i + 1; j < length; j++) 9 { 10 if (waitSort[j] &g

Java常用数据结构和算法

二叉树: 1.每个结点不能多于两个子树: 2.一颗平衡二叉树的深度要比及结点个数N小得多. 二叉查找树: 1.结点x的所有左子树的值小于x,所有右子树的值大于x: AVL树: 1.一种带有平衡条件的二叉查找树: 2.每个结点的左子树和右子树深度最多差1. 红黑树: 1.树的颜色只能为红色或黑色的一种平衡二叉树: 2.树的根结点和叶子结点必须为黑色: 3.红色结点的子结点必须为黑色,且必存在: 4.任一结点到其每个叶子结点黑色的结点树相同: 5.从根到叶子的最长的可能路径不多于最短的可能路径的两倍

php——常用数据结构与算法

字符串转数组 explode(',',$str); 数组转字符串 implode('',$arr); 冒泡排序 function data_sort(&$arr){ $len=count($arr):    for ($i=0; $i < $len; $i++) {         for ($j=1; $j < $len-$i; $j++) {             if ($arr[$j-1] > $arr[$j]) {                 $temp = $a

常见数据结构与算法整理总结(上)

数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.算法是为求解一个问题需要遵循的.被清楚指定的简单指令的集合.下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出. 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表.栈.队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章.Java - 集合框架完全解析 一.线性表 1.数组实现 2.链表 二.栈与队列 三.树

【转】数据结构与算法(上)

数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.算法是为求解一个问题需要遵循的.被清楚指定的简单指令的集合.下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出. 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几种数据结构,线性表.栈.队列等都提供了较好的实现,就是我们经常用到的Java集合框架,有需要的可以阅读这篇文章.Java - 集合框架完全解析 一.线性表 1.数组实现 2.链表 二.栈与队列 三.树

Python 常用查找数据结构及算法

一.基本概念 二.无序表查找 三.有序表查找 3.1 二分查找(Binary Search) 3.2 插值查找 3.3 斐波那契查找 四.线性索引查找 4.1 稠密索引 4.2 分块索引 4.3 倒排索引 五.二叉排序树 六. 平衡二叉树 七.多路查找树(B树) 7.1 2-3树 7.2 2-3-4树 7.3 B树 7.4 B+树 八.散列表(哈希表) 8.1 散列函数的构造方法 8.2 处理散列冲突 8.3 散列表查找实现 8.4 散列表查找性能分析 参考书目<大话数据结构> 一.基本概念

游戏制作中的大宝剑---常用的数据结构与算法

前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为了方便大家阅读,个人认为比较重要的内容-------红色字体显示 个人认为可以了解的内容-------紫色字体显示 --------------------------------------------------------------------------- ---------------------------------

java常用的数组、字符串、集合操作以及数据结构与算法基本知识

java中常用封装的数组 .字符串. 集合来操作对象,但数据结构中常用的有栈和队列   数与图以及他们之间的排序,查找. 数组声明没有分配内存空间  只有创建或者是初始化时才分配,创建时把数组中的数据类型数据所在的内存空间首地址赋值给数组名,在创建每个对象时,都会给该对象分配地址和它存储的数据 .如变量    int arr[]; int arr[]={1,2,3};  arr=new int[10] ,int arr[][]={{1,9,7},{1,2,3}}  int arr[][]=new

算法数据结构02 /常用数据结构

目录 2算法数据结构02 /常用数据结构 1. 栈 2. 队列 3. 双端队列 4. 内存相关 5. 顺序表 6. 链表 7. 二叉树 2算法数据结构02 /常用数据结构 1. 栈 特性:先进后出的数据结构,有栈顶和栈尾 应用场景:每个 web 浏览器都有一个返回按钮.浏览网页时,这些网页被放置在一个栈中(实际是网页的网址).现在查看的网页在顶部,第一个查看的网页在底部.如果按'返回'按钮,将按相反的顺序浏览刚才的页面. 栈的方法: Stack():创建一个空的新栈. 它不需要参数,并返回一个空