
排序算法
MasterWfs
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
选择排序
1、直接选择排序需要进行n-1次比较 每次将i位置的元素依次与之后的所有元素进行比较,若其大于则进行位置调换实现代码:public class DataWrap implements Comparable<DataWrap> { int data; String flag; public DataWrap(int data, String flag) {原创 2017-12-04 17:06:21 · 147 阅读 · 0 评论 -
交换排序
冒泡排序对数列进行重复的比较,每次比较相邻的两个元素,直至没有元素需要交换实现代码public class BubbleSort { public static void main(String[] args) { DataWrap[] dataWraps = { new DataWrap(21, ""), new DataWrap(30, ""),原创 2017-12-05 14:06:42 · 159 阅读 · 0 评论 -
插入排序
直接插入排序 依次将待排序的数据,按其关键值的大小插入到前面的有序序列 实现代码 public class InsertSort { public static void main(String[] args) { DataWrap[] dataWraps = { new DataWrap(9, ""), new DataWrap(-16,...原创 2017-12-05 16:33:02 · 136 阅读 · 0 评论 -
归并排序
基本思想:将待排序序列R[0…n-1]看成是n个长度为1的有序序列,将相邻的有序表成对归并,得到n/2个长度为2的有序表;将这些有序序列再次归并,得到n/4个长度为4的有序序列;如此反复进行下去,最后得到一个长度为n的有序序列。实现代码public class MergeSort { public static void main(String[] args) { D原创 2017-12-07 14:04:58 · 147 阅读 · 0 评论 -
桶式排序
这种排序方式需要满足两个特性: 待排序列所有值处于一个可枚举的范围 这个可枚举的范围不应该太大,否则开销太大排序的具体步骤如下: (1)对于这个可枚举范围构建一个buckets数组,用于记录“落入”每个桶中元素的个数; (2)将(1)中得到的buckets数组重新进行计算,按如下公式重新计算: buckets[i] = buckets[i] +buckets[i-1] (其中1<=ipubli原创 2017-12-07 14:49:24 · 175 阅读 · 0 评论 -
基数排序
基数排序必须依赖另外的排序方法,最适合的是桶式排序。 基本思路:就是将待排序的数据拆分成多个排序关键字 采用最低位优先法 依次按照数据的拆分出来的个位、十位、百位。。。的子关键字排序。实现代码public class MultiKeyRadixSort { public static void main(String[] args) { int[] data =原创 2017-12-07 16:22:06 · 155 阅读 · 0 评论