
数据结构
HSUPERA
这个作者很懒,什么都没留下…
展开
-
c语言实现快速排序
快速排序 时间复杂度:最好时间O(nlogn) 最坏时间O(n^2) 稳定性:不稳定 快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2016-07-12 21:32:19 · 3228 阅读 · 0 评论 -
C语言实现归并排序
归并排序 时间复杂度:O(nlogn) 空间复杂度:O(n) 稳定性:稳定 实现原理:采用分治法(Divide and Conquer)将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,也叫二路归并。 代码实现:采用递归方法实现#include<stdio.h> #include<stdlib.h> #define MAXS原创 2016-07-13 09:27:51 · 1030 阅读 · 0 评论 -
数据结构之堆排序C语言实现
堆排序: 时间复杂度:O(nlogn) 稳定性:不稳定 实现原理:将待排序的序列构造成一个大顶堆(或小顶堆) 整个序列的最大值就是堆顶的根节点,将它移走 (就是将其与对数组的末尾元素交换,此时末尾元素就是最大值)。然后将剩余的n-1个序列重新 构成一个堆,这样就会的到n个元素中 的最大值如此反复执行,得到一个有序序列。 大顶堆:根节点是最大者 小顶堆:根节点是最小者 大顶原创 2016-07-12 09:44:31 · 3861 阅读 · 1 评论