大话数据结构系列
唯音
IT小码农
展开
-
简单排序之冒泡排序
内排序与外排序: 内排序是在排序的过程中,待排序的所有记录均存于内存中。外排序是由于排序的记录数过多,不能同时放置于内存,整个排序过程需要在内外存之间多次交换数据才能进行。此处主要介绍内排序。 内排序性能影响的三个指标: 1 时间性能:(内排主要进行比较和移动操作) 2 辅助空间(执行算法所需的其他存储空间) 3 算法的复杂性:按照排序过程中借原创 2016-07-09 11:15:56 · 275 阅读 · 0 评论 -
快速排序
快速排序思想 通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。原创 2016-07-10 17:38:38 · 277 阅读 · 0 评论 -
简单排序之直接插入排序
直接插入排序思想: 直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。(联想扑克牌游戏) 排序的稳定性: 在排序过程中相同元素的前后顺序并没有改变,则可认为此排序为稳定排序,反之为不稳定排序。 直接插入排序实现(java) 搜索和数据后移二个步骤合并。即每次a[i]先和前面一个数据a[i-1]比较,如果a[i] > a[原创 2016-07-10 15:49:02 · 304 阅读 · 0 评论 -
希尔排序
希尔排序思想: 希尔排序是在插入排序的基础上进行改进的,通过每次减小间隔(每次其实也是在做插入排序)来进行排序优化直至间隔为1后进行最后一次的插入排序。这里间隔的最大值判断以及间隔后的每次的插入排序的移动间隔的更改比较重要。希尔排序间隔序列函数 h = h * 3+ 1 //计算最大间隔 while(h < arr.length / 3) { h = h * 3 + 1;原创 2016-07-14 20:52:35 · 338 阅读 · 0 评论 -
堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 二叉堆的定义 二叉堆是完全二叉树或者是近似完全二叉树。 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。 当父结点的键值总转载 2016-07-14 21:34:55 · 274 阅读 · 0 评论 -
二路归并算法
http://blog.csdn.net/middlekingt/article/details/8446552原创 2016-07-15 11:03:00 · 420 阅读 · 0 评论 -
简单排序之简单选择排序
简单选择排序思想: 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1 排序的稳定性: 在排序过程中相同元素的前后顺序并没有改变,则可认为此排序为稳定排序,反之为不稳定排序。 简单选择排序实现: package simpleSorts; public class simpleChooseSort { static void Choos原创 2016-07-09 16:27:21 · 306 阅读 · 0 评论