插入排序
来源:互联网 发布:vb 修改批处理 编辑:程序博客网 时间:2024/05/16 17:36
思想
将一个数再已经有序的序列中找到自己的位子插入,在数组中选择有序序列的后一个数,并在有序部分从后往前遍历对比
实现思路(小->大)
第一个数只有一个数,已经有序
第二个数与第一个数比较,大则不操作,小则交换位置构成有序
第三个数及以后,从有序子序列往前比较,比前一个数小则交换位置,直到比前一个数大
实现代码
package sort;import java.util.Random;public class InsertSort { /** * 插入排序:将一个数再已经有序的序列中找到自己的位子插入,在数组中选择有序序列的后一个数,并在有序部分从后往前遍历对比 * 百万随机数排序耗时:523569毫秒;约9分钟; * @param arr */ public static void insertSort(int[] arr) { for ( int i = 1; i < arr.length; i++ ) { for ( int j = i; j > 0; j-- ) { if (arr[j] >= arr[j - 1]) { break; } swap(arr, j, j - 1); } } } private static void swap(int[] arr, int j, int i) { // TODO Auto-generated method stub int tem; tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } public static void main(String[] args) {// int[] arr = new int[1000000];// for(int i = 0; i < arr.length; i++){// arr[i] = new Random().nextInt(1000000);// } int[] arr = {8,5,6,7,2,3}; long startTime=System.currentTimeMillis(); InsertSort.insertSort(arr); long endTime=System.currentTimeMillis(); System.out.println(endTime-startTime); for ( int i : arr ) { System.out.println(i); } }}
阅读全文
0 0
- 插入排序-【插入排序】
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 插入排序
- 单链表中是否有环的问题
- [BZOJ2763][JLOI2011]飞行路线(图论)
- 字符串的全排列next_permutaion
- 51nod 1158 全是1的最大子矩阵
- Angular 信息管理表
- 插入排序
- 导弹拦截
- SSM整合所遇的坑
- hdu 1198Farm Irrigation
- 工厂学习总结(简写)
- eclipse阿里巴巴代码规范插件的使用
- 常用工具类:ImageLoaderUtils
- 购物车,全选,反选,删除,添加
- TCP 与 UDP 对比,以及 TCP 的三次握手与四次挥手