上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页
摘要: 一、算法原理 基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(low指向起始位置,high指向末尾),首先从后半部分开始,如果发现有元素比该基准点的值小,就交换low和high位 阅读全文
posted @ 2019-02-17 16:06 梨花梦蝶 阅读(4057) 评论(0) 推荐(0) 编辑
摘要: 冒泡、插入、选择排序的时间复杂度为O(n2) Arrays.sort()时间复杂度为nlgn 具体算法实现代码: 控制台输出: 阅读全文
posted @ 2019-02-17 10:34 梨花梦蝶 阅读(1511) 评论(0) 推荐(0) 编辑
摘要: Java工具包中的Arrays工具类里面有数组的快速排序算法。 源码如下: java.util.Arrays类能方便的操作数组,它所有的方法都是静态的。 1.filll方法 :给数组中的某段元素附上相同值。 2.sort方法:对数组中某段元素排序。 3.equals方法:比较两个数组,判断的是数组中 阅读全文
posted @ 2019-02-17 09:46 梨花梦蝶 阅读(2409) 评论(0) 推荐(0) 编辑
摘要: 一、算法原理 简单选择排序的基本思想:给定数组:int[] arr={里面n个数据};第1趟排序,在待排序数据arr[1]~arr[n-1]中选出最小的数据,将它与arrr[0]交换;第2趟,在待排序数据arr[2]~arr[n-1]中选出最小的数据,将它与r[1]交换;以此类推,第i趟在待排序数据 阅读全文
posted @ 2019-02-17 09:11 梨花梦蝶 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 一、算法原理 原理:比较两个相邻的元素,将值大的元素交换至右端。 思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤 阅读全文
posted @ 2019-02-17 08:39 梨花梦蝶 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 顺序查找O(n) 二分查找O(lgn) 通过代码来感受性能差别 运行结果: 阅读全文
posted @ 2019-02-16 16:26 梨花梦蝶 阅读(3487) 评论(0) 推荐(0) 编辑
摘要: 希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一种更高效的版本,也成为缩小增量排序。 一、算法原理 现在有一个array,希尔排序就是设定一个增量incrementNum(0<incrementNum<array.length)。 先从array[0]开始,以incrementNum为增量 阅读全文
posted @ 2019-02-16 15:27 梨花梦蝶 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 二分查找是一种查询效率非常高的查找算法。又称折半查找。 一、算法思想 有序的序列,每次都是以序列的中间位置的数来与待查找的关键字进行比较,每次缩小一半的查找范围,直到匹配成功。 一个情景:将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表, 阅读全文
posted @ 2019-02-16 10:53 梨花梦蝶 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 如何正确的求2个数的平均值。在练习算法二分查找的时候发现的,以前没有注意到的bug 备注:数据以int类型为例 一、以前的通用写法 请记住:这是一个有bug的写法,因为两个数相加有可能超过了int的范围,但是他们的平均值肯定不会超过范围。以前没有注意到这个问题,知道深入了解了位运算。 二、正确写法 阅读全文
posted @ 2019-02-16 10:38 梨花梦蝶 阅读(5280) 评论(0) 推荐(0) 编辑
摘要: 汉诺塔题目要求: 解题思路: 1~N从A移动到B,C作为辅助 等价于: 1、1~N-1从A移动到C,B作为辅助 2、把N从A移动到B 3、1~N-1从C移动到B,A为辅助 算法实现: 阅读全文
posted @ 2019-02-16 09:12 梨花梦蝶 阅读(256) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页