![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 50
taizhoufox
这个作者很懒,什么都没留下…
展开
-
排序算法总结
内部排序的算法的时间复杂度,空间复杂度,稳定性的记忆方法:(1)时间复杂度:以平均时间复杂度O(nlogn)的速度排序快速排序、归并排序、堆排序,希尔排序一般为O(n^3/2),差的话就为O(n^2)冒泡冒的好是O(n),冒得不好就是O(n^2)直接插入插得好,就是O(n),直接插入插得不好就是O(n^2)在所有同量级(O(nlogn)原创 2009-07-23 16:28:00 · 754 阅读 · 0 评论 -
排序算法总结
感谢原文作者:http://knowmore.blogbus.com/logs/11803419.html 一、排序的分类 1.根据排序的稳定性,排序可以分为稳定排序和非稳定排序。 稳定排序:冒泡排序、直接插入排序 不稳定排序:选择排序、希尔排序、快速排序转载 2009-07-23 16:20:00 · 730 阅读 · 0 评论 -
排序系列之(2)堆排序及C语言实现
堆排序是利用一直特殊的数据结构来完成排序工作的,即“堆”。堆可以被看做一棵完全二叉树,树的每一层都会填满,最后一层可能除外。这种堆有两种:最大堆和最小堆。在堆排序算法中,使用的是最大堆。最小堆通常在构造优先队列时使用。最大堆的性质是除了根节点之外的每一个节点,其父节点的值必须大于等于其子节点。即t[parent] >= t[child]以下是其源代码实现/************************************************ * 测试从数组0号位开始的堆排序 * 0号是根元原创 2010-10-13 16:10:00 · 3213 阅读 · 0 评论 -
KMP算法及实现
<br />字符串的处理除了串搜索、插入、删除和替换外,还有其独特的运算——字符串的查找,即字符串的匹配,也就是常说的串模式匹配。<br /> <br />KMP算法由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,其改进在于:每当发现一趟匹配过程中出现字符比较不等时,不需回溯i指针(i指针指向串,表示当前串下标),而是利用已经得到的“部分匹配”的结果将模式串向右移动尽可能远的距离,继续进行比较。KMP算法的时间复杂度为O(m+n)<br /> <br />由于模式“向右移动”的距离K原创 2010-10-12 16:10:00 · 906 阅读 · 2 评论 -
排序系列之(1)归并排序及C语言实现
<br />有很多算法在结构上是递归的:为了解决一个给定的问题,算法需要一次或多次递归的调用其本身来解决相关的问题。这些算法通常采用分治策略:将原问题划分成n个规模较小而结构与原问题相似的子问题;递归的解决这些子问题,然后将结果合并,就能得到原问题的解。<br />分治模式在递归时一般都有三个步骤<br />分解:将原问题分解成一系类子问题<br />解决:递归的解各子问题。若子问题足够小,则直接求解。<br />合并:将子问题的结果合并成原问题的解。<br /> <br />归并排序在算法上完全依照了上述原创 2010-10-13 15:31:00 · 7817 阅读 · 2 评论 -
排序系列之(3)快速排序及C语言实现
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序的划分过程还有一个作用就是可以用来寻找中位数以下是其C语言源码实现#include "stdio.h"#include "stdlib.h"#include "sort.h"原创 2010-10-22 16:56:00 · 3112 阅读 · 0 评论 -
排序系列之(4)希尔排序及C语言实现
希尔排序(Shell Sort)也称为递减增量排序算法,是插入排序的一种高速而安定的改良版。因希尔(Donald L. Shell)于1959年提出而得名。各种实现在如何进行递减上有所不同。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位原创 2010-10-22 17:09:00 · 11586 阅读 · 3 评论