
算法
Coder-lkkk
这个作者很懒,什么都没留下…
展开
-
希尔排序(实现+总结)
希尔排序的名称来源于它的发明者,该算法是第一批冲破二次时间屏障的算法之一,它是基于插入排序改进而成的的一种快速的算法。 1、基本思想: 它的工作原理是比较相隔一定距离的元素,并且每趟比较所用的距离随算法进行而减小,因此,希尔排序也叫做缩减增量排序。 对于大规模的乱序数组插入排序很慢,因为它只会交换相邻元素,因此只能一点点地挪到相应位置,极端情况如最小元素刚好在数组的最右端,那它要经过n-1...原创 2019-05-15 00:21:46 · 3137 阅读 · 2 评论 -
选择排序(java实现)
选择排序是一种直观简单的排序方法,之所以叫做选择排序,是因为它不断地选择待排序元素中的最小者。 排序步骤 首先,遍历一次找到数组中最小的那个数,将它放到数组中第一个位置。 其次,遍历剩下的元素找到其中最小的元素,放到数组第二个位置。 循环往复,直到整个数组排好序。 上个动态图直观理解一下 下面是代码 public class SelectionSort { p...原创 2019-05-12 12:13:41 · 234 阅读 · 0 评论 -
插入排序(java实现)
插入排序也是一种比较稳定的排序方法,它快于冒泡排序,适合少量数据的排序。它将待排序数据分为有序部分、无序部分,每次将无序部分的第一个元素与在它之前的有序部分作比较,找到相应的位置,并插入而完成。插入排序利用了这样一个事实:位置 0 到 i-1 上的元素是有序的。 1、基本思想 将第一个元素认为是有序数列,让第二个元素与之前的元素比较,如果大于第二个元素就令它后移一位,然后把第二个...原创 2019-05-13 10:27:02 · 375 阅读 · 0 评论 -
归并排序(实现+总结)
归并算法基于归并这个操作,即将两个有序的数组归并成一个更大的有序数组,人们根据归并操作发明了归并算法,将待排序元素的序列分成两部分分别排序(递归地),再将结果归并起来。 基本思想 1、将待排序的序列 分成大小为2/n的两部分 2、对两部分使用归并排序(递归地) 3、将排好序的两部分合并起来 这张图体现了分而治之的思想,从图中我们可以看到,在“分”的阶段,原始数组被不断分成越来越小的子数组,直到子...原创 2019-05-27 09:16:22 · 1516 阅读 · 2 评论 -
快速排序(实现+总结)
快速排序是一种应用非常广泛的算法,它流行的原因首先就是快,在时间复杂度为O(NlogN)的几种算法中,它的效率较高,此外它的实现简单并且能够原地排序(不实用辅助数组),与归并一样,快速排序也使用了分治的思想,因此貌似很多公司面试都喜欢考这个。 基本思想 1、先从数列中取出一个数作为切分元素。 2、对数组进行切分,比切分元素小的数放在左边,比它大的放在右边。 3、对左右区间重复第二步(递归地),直到...原创 2019-05-28 23:58:02 · 1180 阅读 · 0 评论