学点算法
chenjing_er
天道酬勤
展开
-
归并排序
归并排序 归并排序运用的是分治的思想,将问题分解成规模更加小的问题解决,然后合并。归并排序先将待排序序列分解成更加小的待排序序列直到待排序序列已经排好序(长度为1),然后合并排好序的序列。 涉及算法的伪代码实现 // 使用一个哨兵避免每次都判断待排序序列越界问题 MEARGE(A, lo, mid, hi) n1 = mid - lo + 1; ...原创 2018-04-08 21:41:14 · 113 阅读 · 0 评论 -
选择排序
选择排序 选择最小的一个元素放在第一个位置上,第二小的元素放在第二个位置,以此类推,直到待排序序列排序完成。 排序过程 待排序序列: 4, 6, 3, 1, 8, 9, 3 i = 0; min = 3 : 1, 6, 3, 4, 8, 9, 3 i = 1; min = 2 : 1, 3, 6, 4, 8, 9, 3 i = 2; min = 6 : 1, 3, 3, ...原创 2018-04-01 22:23:48 · 92 阅读 · 0 评论 -
希尔排序
希尔排序 希尔排序是增量为h的插入排序算法。插入排序算法比较和移动的增量为1,如果待排序元素在最后一个,则需要移动n-1个位置才能移到正确的位置。希尔排序根据待排序序列的无序性,将增量变为h,成为比较h增量的子数组(数组较小,无序)就可以使比较的位置可以是h。 Java实现 public class ShellSort { public static void main(Str...原创 2018-04-09 21:16:10 · 88 阅读 · 0 评论 -
插入排序
插入排序 将待排序序列依次插入到已经排好序的序列中,直到排序完成 算法过程 伪代码实现 INSERTION_SORT(A) for i=2 to A.length //约定,数组是从1开始的角标 key = A[i] j = i - 1; while(j > 0 AND A[i] > A[j]) A[j +...原创 2018-04-03 23:45:42 · 87 阅读 · 0 评论 -
一颗二叉搜索树
二叉搜索树是一颗度为2的数,且左子树都不大于根节点,右子树都不小于根节点。 以下分步实现一个简单的二叉搜索树 节点 二叉搜索树上的节点保存着一个值value, 指向父节点的指针,以及两个指向左右兄弟的指针。简单的实现如下: public class Node { T value; Node parent; Node left; ...原创 2018-04-26 22:00:08 · 200 阅读 · 0 评论