
算法
于万丈深渊
这个作者很懒,什么都没留下…
展开
-
算法之堆排序
在学习堆排序之前有必要了解一下完全二叉树的结构原理,因为堆排序是基于完全二叉树的。https://blog.youkuaiyun.com/qq_22642239/article/details/80774013 可以参考下这篇文章学习一下树。一,先说二叉树:名词解释:1.层次:顶级节点是0层,依次往下递增。2.高度:指顶级节点到最远子节点的边长。什么都没有树高为-1;顶级节点树高为0。比如如下图...原创 2019-08-27 16:51:25 · 176 阅读 · 0 评论 -
算法之归并排序
归并排序:见名知意,递归合并是这个排序算法的核心。和快速排序一样采用分治法,化繁为简,化整为零时这个方法的特点,先把一个大数组分解为一个个长度为1的小数组,然后合并,在合并的时候进行排序,才用的方法就是创建一个新的数组,用来存放原来两个数组的数据,是在存放的时候排序,存放的时候,两个旧的数组都是有序的,从他们的最小值依次比较,谁小谁先放,一次存放,结束。这是一次递归过程,整个数组的数据就是好多个...原创 2019-08-26 19:35:51 · 162 阅读 · 0 评论 -
算法之希尔排序
原理:相比于插入排序每次只能比较相邻的数,希尔排序可以比较相距较远的数,解决了当数组最后一位是最小值时,插入排序将移动整个数组来把最后一位放在最前。希尔排序,当distance初始值比较大时,每组数据最小,此时插入排序效率高;当distance最小时,虽然每组数据多了,但是大部分有序,也减少了挪移次数。代码详解,亲测可行public class ShellSort { public ...原创 2019-08-15 10:41:02 · 129 阅读 · 0 评论 -
算法之插入排序
插入排序思想:一个数组逻辑上分为两部分,一部分是已经排好序的有序数列,一部分是未排序的混乱数列,每次排序都是从混乱序列中选择一个数和有序数列比较,放入有序数列合适的位置,这样,有序数列越来越大,混沌数列越来越小,最终所有的都是有序数列。最好情况比较n次,交换0次;最差情况,比较n(n+1)/2次,约为n^2次,交换n次。public class test { public static...原创 2019-08-08 10:32:16 · 131 阅读 · 0 评论 -
算法之快速排序
思想:二分法,递归 public static void main(String[] args) { int[] arr = {10, 7, 2, 4, 7, 62, 3, 4, 2, 1, 8, 9, 19}; quickSort(arr, 0, arr.length - 1); for (int i = 0; i < arr.len...原创 2019-08-01 19:01:47 · 156 阅读 · 0 评论 -
算法之选择排序
原理:假设法。数组中,假设排在第一位的值是最小的,给其一个最小值标识记为min,取第一位的值依次和后面的的数据进行比较,比较过程中发现有一个数据a比他小,那么就假设数据a是最小的,把最小值下标赋值给a,往后依次进行比较,若还有值比a小,则再把最小值标识min付给它,这样比较完一轮之后,会从数组中得到数组下标为多少的值是最小的,这对数组中,最小的一个值就算出来了。往后依次可以算出剩余的。。。。。代...原创 2019-07-25 20:50:01 · 122 阅读 · 0 评论 -
算法之冒泡排序
冒泡排序:核心思想是对所有数据两两进行比较,使之同一个方向上有序。java代码实现:public static void bubble_sort(int[] arr) { int i, j, temp, len = arr.length; // 外层循环决定循环次数,每次循环之后必定有一个最大值被分配到了最后,所以会把最大值数字排除在外,循环次数减一; // 内层循环决定比较次数...原创 2019-07-22 21:09:48 · 150 阅读 · 0 评论