数据结构与算法
文章平均质量分 56
siyangshen
这个作者很懒,什么都没留下…
展开
-
算法回顾之二:直接插入排序
算法回顾系列第二篇:直接插入排序算法-------------------------------------------直接插入排序基本原理:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含一个元素,无序表中包含有n-1个元素。排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。程序实现...原创 2012-10-18 22:35:24 · 78 阅读 · 0 评论 -
算法回顾之三:二分查找
算法回顾系列第三篇:二分查找算法------------------------------------------------二分查找算法 基本原理:首先,假设表中元素是按升序排列.将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功.否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找...原创 2012-10-21 11:37:01 · 101 阅读 · 0 评论 -
算法回顾之四:折半插入排序
算法回顾系列第四篇:折半插入排序------------------------------------------------折半插入排序 基本原理:类似直接插入排序,把n个待排序的元素看成为一个有序表和一个无序表,每趟取无序表中的第一个元素插入有序表中。但在插入的过程中不是与有序表中的每个元素去比较,而是使用二分查找算法确定插入的位置。 程序实现:publi...原创 2012-10-28 10:51:39 · 111 阅读 · 0 评论 -
算法回顾之五:希尔排序(缩小增量排序)
算法回顾系列第五篇:希尔排序---------------------------------------希尔排序(缩小增量排序) 基本原理:该方法实质上是一种分组插入排序方法,属于直接插入排序的改进算法。比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。 算法先将要排序的一组数按某个增量d分成若干组,每组中记录的下...原创 2012-10-28 11:51:32 · 183 阅读 · 0 评论 -
算法回顾之六:选择排序
算法回顾系列第六篇:选择排序-----------------------------------------选择排序 基本原理:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前(或最后),直到全部待排序的数据元素排完。 程序实现:public void sort(int[] data) { //i代表已经排序的元素个数....原创 2012-10-29 21:23:18 · 71 阅读 · 0 评论 -
算法回顾之七:归并排序
算法回顾系列第七篇:归并排序------------------------------------归并排序 基本原理:利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后通过递归步骤将排好序的半子表合并成为越来越大的有序序列。归并排序包括两个步骤,分别为:1、划分子表。2、合并半子表。该算法是采用分治法(Divide and Conquer...原创 2012-11-11 12:11:11 · 79 阅读 · 0 评论 -
算法回顾之八:基数排序
算法回顾系列第八篇:基数排序--------------------------------基数排序 基本原理:顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开...原创 2012-11-13 21:25:47 · 83 阅读 · 0 评论 -
算法回顾之一:冒泡排序
数据结构与算法是计算机本科相关专业学生的必修课,我当年自然也是学过的,而且印象考试成绩还不错。不过近期写了一个冒泡排序算法(不使用类库实现),竟然出现了Bug,实在惭愧。仔细想想工作这几年一直都是使用Java集合框架和类库,因此感觉还是有必要再重温一下。-----------------------------------------------------------冒泡排序...原创 2012-10-14 19:15:30 · 83 阅读 · 0 评论