数据结构
文章平均质量分 74
大块木
JAVA/ACM/DB
展开
-
双向链表的基本操作
双向链表(Doubly Link List):每个结点包含两个指针,分别指向元素的直接前驱结点与直接后驱结点,其特点是可以表中任意的元素结点出发,从两个方向遍历链表。 双向链表的结构体声明 typedef struct Node { int data; struct Node *front; struct Node *next; }Node; 带头结点双向链表的尾插法原创 2015-01-06 10:42:36 · 771 阅读 · 0 评论 -
排序(直接插入排序)
1、插入排序的简单介绍 直接插入排序是一种简单的排序方法,和选择、冒泡一样,是一种稳定的排序方法,时间复杂度和空间复杂度和它们一样,分别是O(n^2)和O(1),插入排序的基本思想是将一个待定的元素与一个已经有序的部分元素进行比较,确定一个插入的位置后,将这个待定的元素插入到这个位置,以这个方式一直进行插入,直到整个序列有序。要这个插入的过程,一般我们采用的顺序存储结构,而不是链表,所以确定原创 2015-11-28 00:20:10 · 809 阅读 · 0 评论 -
排序(希尔排序)
1、希尔排序的简单介绍 希尔排序(shellSort)出自D.L.Shell,所以取名shell,是基于直接插入排序一种不稳定的排序方法,又称“缩小增量排序”。 希尔排序的基本思想就是:将待排序的元素分成若干组,对这些组分别进行直接插入排序,使得所有的分组有序排列,再缩小分组的范围(增量),对缩小后的若干分组继续进行分组插入排序,当范围越来越小,直到为1时,进行最后一次排序,就可以保证所有原创 2015-11-28 13:12:30 · 853 阅读 · 0 评论 -
排序(堆排序)
1、什么是堆 通过上面的图片可以看出,堆其实是一棵完全二叉树。每个结点的值都大于或等于其左右两个子结点,称为大顶堆;每个结点的值小于或等于其左右子结点,称为小顶堆。既然是一个完全二叉树,堆结构自然也是严格遵守二叉树的一些规则:如果按从上至下,由左及右的层次遍历给每个结点编号,从1开始,那么编号为1的结点就是根结点,其左右子结点的编号分别为2i和2i+1。 2、堆排序算法 堆排序(He原创 2016-01-09 23:07:20 · 931 阅读 · 0 评论 -
排序(冒泡排序与快速排序)
1、冒泡排序(Bubble Sort)原创 2014-11-23 17:22:51 · 3154 阅读 · 0 评论