随笔分类 -  数据结构

JAVA实现
摘要:摘要: 作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。 堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫堆 阅读全文
posted @ 2016-04-10 15:14 MOBIN 阅读(39771) 评论(14) 推荐(25) 编辑
摘要:快速排序是冒泡排序的改进版,也是最好的一种内排序,在很多面试题中都会出现,也是作为程序员必须掌握的一种排序方法。 思想:1.在待排序的元素任取一个元素作为基准(通常选第一个元素,但最的选择方法是从待排序元素中随机选取一个作为基准),称为基准元素; 2.将待排序的元素进行分区,比基准元素大的元素放在它 阅读全文
posted @ 2015-07-27 22:32 MOBIN 阅读(119082) 评论(11) 推荐(111) 编辑
摘要:排序思路:通过折半查找的方式找到合适的插入位置再插入。算法实现:public class BiInsertSort { public static void biInsertSort(int arr[]){ for(int i = 1; i = right+1; j --){ ... 阅读全文
posted @ 2015-07-27 16:41 MOBIN 阅读(1143) 评论(0) 推荐(0) 编辑
摘要:排序思路:每次将一个待排序的元素与已排序的元素进行逐一比较,直到找到合适的位置按大小插入。 第一趟比较示图: 算法实现: 结果: 算法分析:1.当元素的初始序列为正序时,仅外循环要进行n-1趟排序且每一趟只进行一次比较,没有进入if语句不存在元素之间的交换(移动)。此时比较次数(Cmin)和移动次数 阅读全文
posted @ 2015-07-27 13:14 MOBIN 阅读(29162) 评论(2) 推荐(8) 编辑
摘要:排序思路:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环。算法实现: public static void selectSort(int arr[]){ int temp; for(int i = 0;i < arr.length 阅读全文
posted @ 2015-07-26 21:44 MOBIN 阅读(3074) 评论(2) 推荐(0) 编辑
摘要:排序思路:整个算法从最下面的元素开始,对相邻的元素进行比较,经过交换使得较小的元素在较大的元素之上,经过对每个元素的两两比较,最后最小的元素被移到前面的位置。 算法实现: 算法改进:在某些情况下,可能在第i趟时元素就已经全部排好序了,此时我们就不必在再进行后面几趟的比较了。 如元素:1 2 3 4 阅读全文
posted @ 2015-07-26 10:32 MOBIN 阅读(3897) 评论(0) 推荐(3) 编辑