算法
wind_bell27
这个作者很懒,什么都没留下…
展开
-
算法--排序
排序算法的总结: 所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下:输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。排序的稳定性 当待排序记录的关键字均不相同时,排序结果是惟一的,否则排序结果不唯一。...2007-11-16 17:00:56 · 95 阅读 · 0 评论 -
排序--插入排序
插入排序包括: 直接插入排序,希尔排序1. 直接插入排序原理:依次取带排列数组的元素,将其插入到前面有序的数组中。插入过程:待插入关键字与有序数组最后一位比较,如果小于则将数组最后一位右移,直到关键字小于数组元素时,将关键字放置在当前空的位置,则新的数组有序。实现: public static void insertSort(int[] array) { int n = a...2007-11-16 17:02:02 · 96 阅读 · 0 评论 -
排序--冒泡排序
原理:将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止实现: private static void swap(int[] array, int i, int j) { in...2007-11-16 17:03:06 · 96 阅读 · 0 评论 -
排序--快速排序
快速排序利用分治策略原理:取数组中的一个值pivot做为基准值,对数组分治,小于pivot分为一组,大于pivot分为一组递归对每个分组继续分组,直到分组中只有一个元素主要包括两个步骤1: 以一个基准值为中心,把数组分成两组2: 对每个分组递归分组,直到分组元素只有一个实现: private static int partition(int[] array, int low, ...2007-11-16 17:05:07 · 89 阅读 · 0 评论 -
排序--归并排序
原理:1、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂存向量R1(相当于输出堆)中,待合并完成后将R1复制回R[low..high]中。(1)合并过程 合并过程中,设置i,j和p三个指针,其初值分别指向这三个记录区的起始位置。合并时依次比较R[i]和R[j]的关键字,...2007-11-16 17:06:10 · 86 阅读 · 0 评论