随笔分类 - emanual_算法实践_排序算法
摘要:使用10个辅助队列,假设最大数的数字位数为 x, 则一共做x次,从个位数开始往前,以第i位数字的大小为依据,将数据放进辅助队列,搞定之后回收。下次再以高一位开始的数字位为依据。 以Vector作辅助队列,基数排序的Java代码:
阅读全文
摘要:将两个或两个以上的有序表组合成一个新的有序表。归并排序要使用一个辅助数组,大小跟原数组相同,递归做法。每次将目标序列分解成两个序列,分别排序两个子序列之后,再将两个排序好的子序列merge到一起。
阅读全文
摘要:分为直接选择排序,堆排序 直接选择排序: 第i次选取 i到array.Length-1中间最小的值放在i位置。 堆排序: 首先,数组里面用层次遍历的顺序放一棵完全二叉树。从最后一个非终端结点往前面调整,直到到达根结点,这个时候除根节点以外的所有非终端节点都已经满足堆得条件了,于是需要调整根节点使得整
阅读全文
摘要:包括冒泡排序,快速排序。 冒泡排序法: 该算法是专门针对已部分排序的数据进行排序的一种排序算法。如果在你的数据清单中只有一两个数据是乱序的话,用这种算法就是最快的排序算法。如果你的数据清单中的数据是随机排列的,那么这种方法就成了最慢的算法了。因此在使用这种算法之前一定要慎重。这种算法的核心思想是扫描
阅读全文
摘要:包括直接插入排序,希尔插入排序。 直接插入排序: 将一个记录插入到已经排序好的有序表中。 1, sorted数组的第0个位置没有放数据。 2,从sorted第二个数据开始处理: 如果该数据比它前面的数据要小,说明该数据要往前面移动。 a,首先将该数据备份放到 sorted的第0位置当哨兵。 b,然后
阅读全文
摘要:分类: 1)插入排序(直接插入排序、希尔排序)。 2)交换排序(冒泡排序、快速排序)。 3)选择排序(直接选择排序、堆排序)。 4)归并排序。 5)分配排序(箱排序、基数排序)。 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 选择
阅读全文