1.直接插入排序2.希尔排序3.简单选择排序4.堆排序5.冒泡排序6.快速排序7.归并排序8.基数排序1.直接插入排序经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。将第一个数和第二个数排序,然后构成一个有序序列将第三个数插入进去,构成一个新的有序序列。对第四..
分类:
编程语言 时间:
2017-04-18 11:52:23
阅读次数:
254
上篇总结中主要实践了算法的内排序的交换排序,那么接下来我们继续实践选择排序的两种:直接选择和堆排序算法。 直接选择排序 package com.sort; /** * 直接选择排序算法 * @author weixing-yang * * 算法思路: * 首先找出最大元素,将其与a[n-1]位置置换 ...
分类:
编程语言 时间:
2017-04-16 12:33:55
阅读次数:
214
堆排序 将所有元素插入一个插入一个查找最小元素的优先队列,重复调用删除最小元素,就可得所有元素按升序排序的结果。 堆排序的两个阶段 堆有序 数据有序 排序结束后所有元素按从左到右从上到下的顺序升序排列。 堆排序的优点 所知唯一能同时最优地利用空间和时间的排序算法,在最坏的情况下也能保证使用~2Nlo ...
分类:
编程语言 时间:
2017-04-13 23:37:14
阅读次数:
222
1. 最大(小)堆 对于一个完全二叉树来说,如果所有的结点(叶子结点除外)的值都大于(小于)其左右孩子结点的值,那么这个完全二叉树就被成为一个大(小)根堆。如下图所示。按照堆的定义可以发现,堆顶结点(二叉树的根结点)一定对应整个序列中的最大(小)记录。这样一来,可以设计一种排序思路,每次将堆的堆顶记 ...
分类:
编程语言 时间:
2017-04-13 23:25:04
阅读次数:
231
/* 冒泡排序 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子 例子为从小到大排序 */ # include # define LEN 6 void b... ...
分类:
编程语言 时间:
2017-04-12 21:39:42
阅读次数:
221
输入一个数m表示要排序的数的多少,随机生成m个0~10000之间的数进行堆排序。 ...
分类:
编程语言 时间:
2017-04-12 20:51:05
阅读次数:
174
github链接地址:https://github.com/gaopeng527/go_Algorithm/blob/master/sort.go ...
分类:
编程语言 时间:
2017-04-12 16:10:42
阅读次数:
230
1.算法步骤: 2.代码实现: public static void heapSort(int[] arr){ for(int i=(arr.length-2)/2;i>=0;i--){ siftDown(arr,i,arr.length-1);//从最后一个非叶节点开始,自上向下比较,形成最大堆 ...
分类:
编程语言 时间:
2017-04-10 13:15:59
阅读次数:
192
常用的排序算法包括: 冒泡排序:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后。最将剩下的N-1个数继续比较,将次大数移至倒数第二。依此规律,直至比较结束。时间复杂度:O(n^2) 选择排序:每次在无序队列中“选择”出最大值,放到有序队列的最后,并从无 ...
分类:
编程语言 时间:
2017-04-09 23:42:14
阅读次数:
459