算法
文章平均质量分 77
原之殇
这个作者很懒,什么都没留下…
展开
-
冒泡排序
思想:两两比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。在了解冒泡排序之前,我们可以实现一个最简单的一个排序。//排序算法中用的比较频繁 public static void swap(int[] test,int i,int j) { int temp = test[i]; test[i] = test[j]; test[j] = temp; }public sta...原创 2018-05-14 18:21:06 · 99 阅读 · 0 评论 -
简单选择排序
前言爱炒股票短线的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和印花税过高而获利很少。还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一到,果断买进或卖出。他们因为冷静和沉着,以及交易的次数少,而最终收益颇丰。冒泡排序的思想就是不断地在交换,通过交换完成最终的排序,这和做股票短线频繁操作的人是类似的。我们可不可以像只...原创 2018-05-14 18:55:32 · 115 阅读 · 0 评论 -
直接插入排序
直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。举例:代码public static void insertSort(int[] test) { int target = 0; int j = 0;//记录位置 //假设第一个数已经排好序,被放在了正确的位置上 for (int i = 1; i < test.length;...原创 2018-05-14 19:31:51 · 73 阅读 · 0 评论 -
希尔排序
思想希尔排序是对简单插入排序算法的一个升级,它的思路就是将原有大量数据记录分割成如干个子序列,再分别对子序列进行插入排序,当整个序列基本有序时,再对全体记录做一次插入排序。基本有序:就是小的基本在前面,不大不小基本在中间,大的基本在后面。我们上面提到了将整序列进行分割,那么如何分割将是关键,按顺序分割显然就不合适了,比如我们现在有序列是{9,1,5,8,3,7,4,6,2},现在将它分成三组,{9...原创 2018-05-14 21:15:29 · 91 阅读 · 0 评论 -
快速排序
基本思想 通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部 分记录继续进行排序,以达到整个序列有序的目的。 核心函数分区 public static int partition(int[] a, int low, int high) { //用子表的第一个记录作为中枢值 int pivotKey = a[low]; ...原创 2018-05-15 01:00:43 · 80 阅读 · 0 评论 -
(转载)归并排序
原文地址:点击打开链接//归并排序 public static void merge(int[] a, int low, int mid, int high) { int[] temp = new int[high - low + 1]; int i = low;// 左指针[low , mid]是左边的 int j = mid + 1;/...转载 2018-05-15 01:11:46 · 106 阅读 · 0 评论 -
堆排序
堆的概念堆是具有下列性质的二叉树:每个节点的值都大于或等于其左右孩子结点的值,成为大顶堆,反之,则是小顶堆。如果按照层序遍历的方式给节点从1开始编号,则结点满足一下关系:K堆排序算法 堆排序就是利用堆(我用的是大顶堆)进行排序的方法。 思想:构造大顶堆后,整个序列的最大值就是堆顶的根结点。移走根结点,然后将剩余的序列重新构造成大顶堆,如此反复,最终将会得到一个有序序列。移走根节点其实就...原创 2018-05-08 19:43:49 · 139 阅读 · 0 评论