数据结构
文章平均质量分 56
jlsong2008
这个作者很懒,什么都没留下…
展开
-
堆排序算法
堆排序算法:“堆”定义 n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质):(1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ n) //ki相当于二叉树的非叶结点,K2i则是左孩子,k2i+1是右孩子若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:...原创 2010-12-06 23:03:19 · 112 阅读 · 0 评论 -
快速排序
快速排序(Quicksort): 是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。//快速排序算法实现public class...原创 2010-12-07 22:58:24 · 65 阅读 · 0 评论 -
冒泡排序(单向、双向)
[color=gray]冒泡排序(BubbleSort): 依次比较相邻的两个数,将小数放在前面,大数放在后面。 冒泡排序的执行过程: 1、比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后; 2、仍从第一对数开始比较,将小数放前,大数放后,一直比较到倒数第二个数; ...原创 2010-12-07 23:17:18 · 158 阅读 · 0 评论 -
插入排序
插入排序法: 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。 将n个元素的数列分为已有序和无序两个部分,每次处理就是将无序数列的第一个元素与有序数列的元素从后往前逐个进行比较,找出插入位置,将该元素插入到有序数列的合适位置中。插入排序算法步骤: 1、从有序数列和无序数列{a2,a3,…,an}开始进行排序;...原创 2010-12-07 23:32:24 · 85 阅读 · 0 评论 -
选择排序
选择排序: 每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。基本思想: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: 1、初始状态:无序区为R[1..n],有序区为空。 2、第1趟排序 在无序区R[1..n]中选出关键字最小的记录R[k],将它...原创 2010-12-07 23:44:27 · 78 阅读 · 0 评论 -
希尔排序
希尔排序(Shell Sort): 是插入排序的一种。其基本思想: 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2...原创 2010-12-08 12:36:26 · 93 阅读 · 0 评论 -
归并排序
归并排序: 是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并操作的工作原理如下: 1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排序序列的起始位置3、比较两个指针所指向的元素,选择相对小的元素放入到合...原创 2010-12-08 13:30:45 · 86 阅读 · 0 评论