随笔分类 -  蓝桥杯刷题Java

摘要:插入排序会将之前的所有的比它大的元素进行两两交换(从小到大排列的排序),会增加一些交换时间,降低运行效率,下面我们来讨论一下它的优化算法, 不是进行两两交换,而是把当前待插入的元素取出,让当前元素与之前的所有元素进行一一比较,前一个元素大于当前元素直接覆盖,而到了最后当找到当 前元素的合适位置时只需 阅读全文
posted @ 2018-02-02 14:31 henu小白 阅读(1700) 评论(0) 推荐(1)
摘要:归并排序 (merge sort) 是一类与插入排序、交换排序、选择排序不同的另一种排序方法。归并的含义是将两个或两个以上的有序表合并成一个新的有序表。归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。这里仅对内排序的两路归并方法进行讨论。 一、两路归并排序算法思路 分而治之 阅读全文
posted @ 2018-02-01 21:44 henu小白 阅读(246) 评论(0) 推荐(0)
摘要:快速排序的原理:选择一个关键值作为基准值。比基准值小的都在左边序列(一般是无序的),比基准值大的都在右边(一般是无序的)。一般选择序列的第一个元素。 一次循环:从后往前比较,用基准值和最后一个值比较,如果比基准值小的交换位置,如果没有继续比较下一个,直到找到第一个比基准值小的值才交换。找到这个值之后 阅读全文
posted @ 2018-02-01 21:11 henu小白 阅读(186) 评论(0) 推荐(0)
摘要:冒泡排序、简单插入排序、选择排序是最简单的三种排序算法,时间复杂度都是O(n2),下面介绍一种低于O(n2)的排序算法-希尔排序 插入排序算法的原理就是取用依次递减的增量序列进行多次插入排序,最终使其基本有序,然后再通过增量为1的插入排序使其最终有序。 设计技巧就是使其在前几轮的排序中基本有序,从而 阅读全文
posted @ 2018-02-01 17:33 henu小白 阅读(136) 评论(0) 推荐(0)
摘要:排序原理: 插入排序法 所谓插入排序法乃是将一个数目插入该占据的位置。 假设我们输入的是 “5,1,4,2,3” 我们从第二个数字开始,这个数字是1,我们的任务只要看看1有没有正确的位置,我们的做法是和这个数字左边的数字来比,因此我们比较1和5,1比5小,所以我们就交换1和5,原来的排列就变成了“1 阅读全文
posted @ 2018-01-31 16:58 henu小白 阅读(168) 评论(0) 推荐(0)
摘要:选择排序的原理: 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 代码: package Sort; import java.util.Scanner; pu 阅读全文
posted @ 2018-01-31 16:01 henu小白 阅读(166) 评论(0) 推荐(0)
摘要:冒泡排序的时间复杂度是O(n2),但是这样的冒泡排序是否可以优化呢?答案是肯定的。试想一下,如果我们待排序的序列是{2,1,3,4,5,6,7,8,9},也就是说,除了第一和第二的关键词需要交换外,别的都已经是正常的顺序。当i=1时,交换了2和1,此时序列已经有序,但是算法仍然接着继续循环,之后的大 阅读全文
posted @ 2018-01-31 14:42 henu小白 阅读(469) 评论(0) 推荐(0)
摘要:冒泡排序算法的运作如下:(从后往前) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字 阅读全文
posted @ 2018-01-31 11:41 henu小白 阅读(126) 评论(0) 推荐(0)