
算法
忆杯清茶
这个作者很懒,什么都没留下…
展开
-
归并排序
归并排序原理归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。值得注意的是归并排序是一种稳定的排序方法。将已有序的子序列合并,得到完全有序的序原创 2013-11-27 09:56:34 · 650 阅读 · 0 评论 -
快速排序
快速排序原理设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N原创 2013-11-27 09:58:21 · 598 阅读 · 0 评论 -
堆排序
原理:http://blog.youkuaiyun.com/morewindows/article/details/6709644实例:package com.mylearn.algorithm.sort;import org.apache.commons.lang.xwork.StringUtils;/** * Created by Intelli原创 2013-11-27 10:00:00 · 662 阅读 · 0 评论 -
冒泡排序
冒泡排序思想它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。实例package com.mylearn.algorithm.sort;import org.apache.原创 2013-11-27 09:55:19 · 593 阅读 · 0 评论 -
直接插入排序
直接插入排序原理直接插入排序(straight insertion sort)的作法是:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于稳定的原创 2013-11-27 09:55:45 · 625 阅读 · 0 评论 -
选择排序
选择排序原理n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果:①初始状态:无序区为R[1..n],有序区为空。②第1趟排序在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。……③第i趟排序第i趟排序开始时,当前有原创 2013-11-27 09:56:10 · 482 阅读 · 0 评论 -
B-Tree
B-Tree 假如每个盘块可以正好存放一个B树的结点(正好存放2个文件名)。那么一个BTNODE结点就代表一个盘块,而子树指针就是存放另外一个盘块的地址。下面,咱们来模拟下查找文件29的过程:1 根据根结点指针找到文件目录的根磁盘块1,将其中的信息导入内存。【磁盘IO操作 1次】 2 此时内存中有两个文件名17、35和三个存储其他磁盘页面地址的数据。根据算法我转载 2013-12-13 17:13:07 · 891 阅读 · 0 评论