几种常见的排序算法原理及时空复杂度
来源:互联网 发布:三网合一建站系统源码 编辑:程序博客网 时间:2024/05/17 02:33
排序算法分为两大类:简单排序算法和高级排序算法假设一下元素都有n个
《1》常见的简单排序算法
(1)冒泡法:从最后一个元素开始依次和前面的元素比较;最后一个和前面所有的比较完后,倒数第二个再和前面的比较
最坏情况下:循环次数为n-1,交换次数n-1,时间复杂度为O(n^2);
(2)交换法:从第一个元素开始,用当前的元素依次和后面的元素相比较;
最坏情况下:循环次数为n-1,交换次数为n-1,时间复杂度为O(n^2);
(3)选择法(我的通俗叫法:占座法):先占第一个位置,依次占满座位;
最坏情况下:循环次数为n-1(把前n-1个座位都占了,也就排好序了)交换次数不一定,时间复杂度为O(n^2);
(4)插入法(也叫直接插入排序):从第二个元素开始依次抽出,插入到相应的位置
最坏情况下:循环次数为n-1(抽出n-1次),交换次数不一定,时间复杂度为O(n^2);
《2》常见的高级排序算法有
(1)快速排序(也是一种交换排序):关键在于先在数组中选择一个数字,接下来把数组中的数字分为两部分,比选择小的移到数组的左边,比选择数字大的移到数组的右边
(2)希尔排序(也是一种插入排序):将所有的数据分组,小组内进行排序,之后重新分组,组内数据增多,重新排序(每个步骤都使用直接插入排序)。举一个形象的例子:还是排队打饭,学校有好多班级,不能所有班级都一起打,先按班级(分组)排好队,最后所有的班级再组成一个大组,再一个一个的排着打饭。
(3)堆排序(也是一种选择排序):堆分为大顶堆(父节点大于子节点)和小顶堆(父节点小于子节点),根节点是最大的节点(或者最小的节点),每次挑出根节点之后,将剩余的节点进行重新建堆。
(4)归并排序: 就是相邻两个元素组成一个组,组内进行排序,之后再将组内元素增加,循环比较
- 几种常见的排序算法原理及时空复杂度
- 内部排序算法思想及时空复杂度比较
- 九大排序算法的手写实现及时空复杂度分析 笔试面试必备
- 几种常见排序算法的时间复杂度空间复杂度稳定性汇总表
- 自己整理的几种常见排序算法,及时间复杂度空间复杂度。c++编程
- 几种常见的排序算法及其复杂度——冒泡排序(一)
- 几种常见的排序算法及其复杂度——快速排序(二)
- 几种常见的排序算法及其时间复杂度——选择排序(三)
- 几种排序算法复杂度的比较
- 几种常用排序算法的复杂度
- 几种常见排序算法的Java实现及时间复杂度
- 几种常见的排序及其时间复杂度
- 几种常见算法的介绍及复杂度分析
- 几种常见算法的介绍及复杂度分析
- 几种常见算法的介绍及复杂度分析
- 常见排序算法复杂度
- 常见排序算法复杂度
- 常见排序算法复杂度
- Android 几个ApplicationInfo Info系列类的总结
- 面试题1------定义一个赋值运算符函数
- selenium rc 简单安装及使用
- c# 进制转换
- Hibernate4 掌控数据库:(一)Myeclipse Hibernate Reverse Engeering
- 几种常见的排序算法原理及时空复杂度
- PHP进行RSS订阅
- 关于eclipse adt更新的问题
- 程序中有一条语句,想让它5秒钟之后
- SDL_Init()代码阅读
- OSGi——运行工具箱的配置(org.eclipse.equinox.http org.eclipse.equinox.servlet.api)问题
- 【学习笔记】将xml node 格式化输出为string
- Learn Objective‐C
- CheckBox介绍与应用