排序算法(1)
来源:互联网 发布:1911淘宝交易 编辑:程序博客网 时间:2024/06/11 20:35
选择排序
public static void sort(Comparable[] a){ int N = a.length; for(int i = 0; i < N; i++){ int min = i; for(int j = i + 1; j < N; j++){ if(a[j].compareTo(a[min]) < 0) min = j; } Comparable temp = a[i]; a[i] = a[min]; a[min] = temp; }}
插入排序
public static void sort(Comparable[] a){ int N = a.length; for(int i = 1; i < N; i++){ int j = i; while(j > 0 && a[j].compareTo(a[j-1]) < 0){ Comparable temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; j--; } }}
希尔排序
public static void sort(Comparable[] a){ int n = a.length; int h = 1; while(h < n/3) h = 3*h + 1; //1, 4, 13, ... while(h >= 1){ for(int i = h; i < n; i++){ int j = i; while(j >= h && a[j].compareTo(a[j-h]) < 0){ Comparable temp = a[j]; a[j] = a[j-h]; a[j-h] = temp; j-=h; } } h/=3; }}
嗯,我测试了一下用random随机生成的10w个数,用希尔排序大概只要80毫秒,用选择排序要12秒,用插入排序要15秒(原因是因为随机生成的数是基本无序的,所以更慢),所以希尔排序大概比选择和插入排序快100+倍。
阅读全文
0 0
- 算法、排序(1)
- 排序算法(1)
- 排序算法(1)
- 经典排序算法1(冒泡排序)
- 数据结构算法----排序(1)----插入排序
- 排序算法小结(1) 插入排序
- 排序算法(1)-简单选择排序
- 排序算法复习(1)-- 快速排序
- 排序算法(1)-直接插入排序
- 排序算法(1)--选择排序
- 内部排序算法1(插入排序)
- 八大排序算法(1) 插入排序
- 排序算法(1)选择排序法
- 算法速成(1)七大排序算法
- 算法系列(1)排序算法
- 算法--一揽子排序算法(1)
- 排序算法(一)冒泡排序算法1
- 排序算法(1)插入排序的算法分析
- java 如何选择GET 或POST
- functools
- angularjs删除批量删除
- Jeddict快速上手
- Yii2安装,关于The file or directory to be published does not exist错误
- 排序算法(1)
- win10 64位下 python3.6的scrapy框架安装
- 简单的修改与删除
- c++读取文件及输入到文件的相关问题
- Mac terminal
- 排序算法(2)
- angularjs修改查询
- banner 简单的实现无线轮播的控件
- 人工智能实践教程(四)