随笔分类 -  算法

算法类学习
摘要:一、原理: 本算法基于归并这个简单的操作:即将两个有序的数组合并成一个更大的有序数组。 归并排序:要将一个数组排序,可以先(递归地)将它分成两半分别排序,然后将结果归并起来。 二、实现: 1、java实现自顶向下归并(Comparable接口): 1 public class MergeCo... 阅读全文
posted @ 2015-10-28 16:30 slient_guest 阅读(181) 评论(0) 推荐(0)
摘要:一、原理: 希尔排序的思想是使数组中任意间隔为h的的元素都是有序的,这样的数组被称为h有序数组。 1、将无序数组按照若定的增量h分割为若干个子序列,然后对各个子序列进行插入排序。 2、然后再选择一个更小的增量,再将数组分割为多个子序列进行排序。 3、如此类推,最后选择增量为1(即直接插入排序... 阅读全文
posted @ 2015-10-23 17:15 slient_guest 阅读(167) 评论(0) 推荐(0)
摘要:一、原理: 设有一个长度为N的数组a,下标为0...i...N-1,其中a[0~i]为数组的左半部分,a[i+1~N-1]为数组的右半部分,开始时i=0,要进行递增排序(a[0]a[1],则直接退出排序。 4、之后的步骤如此类推,当索引到达数组最右端时,数组排序就完成了。 从上的原理来看,插入... 阅读全文
posted @ 2015-10-23 14:58 slient_guest 阅读(114) 评论(0) 推荐(0)
摘要:一、原理: 1、遍历整个数组找到最小的那个元素。 2、将他和数组的第一个元素交换位置(如果第一个元素是最小元素,则和自己交换)。 3、在剩下的元素中找到最小的元素,将他和数组的第二个元素交换位置。 4、如此往复,直到将整个数组排序。二、主要实现: 1、java部分实现(通过Comparab... 阅读全文
posted @ 2015-10-20 16:15 slient_guest 阅读(117) 评论(0) 推荐(0)