
算法
coding养家
这个作者很懒,什么都没留下…
展开
-
选择排序
选择排序,就是每次从剩下的元素中选出最小的,内循环通过一轮循环拿到最小元素的下标,然后在外层循环中进行一次交换,放到目标位置。 稳定性,时间复杂度等其它排序算法学习了再对比 public void sort(Comparable[] arr){ int length = arr.length; for (int i = 0; i < length;...原创 2018-08-16 10:41:38 · 138 阅读 · 0 评论 -
插入排序
插入排序很像摸牌时的场景,当前索引的左边都是有序的,但是它们的最终位置还不能确定。 public void sort(Comparable[] arr) { int length = arr.length; for (int i = 1; i < length; i++) { for (int j = i; j >0;原创 2018-08-16 17:15:24 · 169 阅读 · 0 评论 -
希尔排序
选择排序和插入排序原理简单,希尔排序理解起来复杂一些 希尔排序是基于插入排序的。 先来想一下插入排序存在的问题:假如一个元素的初始位置离正确位置特别远,比如手里16张牌,最后摸了一张3,此时要想把它插入到最左边,根据插入排序算法,先与第16张牌比较并交换,最后要交换16次才能到第一位,每次移动一个位置的效率很低,希尔排序的思想主要就是改进这个问题。 希尔排序把元素分为有间隔(记为h)的组,首...原创 2018-08-16 21:29:51 · 219 阅读 · 0 评论 -
归并排序
归并排序的思想将数组中的元素递归地拆分为左右两部分,在左右两部分都排好序后,再将两个子数组归并为一个有序的大数组。归并排序是分治法的典型应用。以下是原地归并且自顶向下归并的例子,归并的时间复杂度是NlogN. public void sort(Comparable[] a) { Comparable[] b = new Comparable[a.length]; ...原创 2018-09-23 12:04:04 · 162 阅读 · 0 评论