package com.sortbasic;import java.util.Random;public class InsertionSort {// 数组private static int[] arr = null;// 随机生成数组// 生成有n个元素的随机数组,每个元素的随机范围为[rangeL, rangeR]public static int[] generateRandomArray(int n, int rangeL, int rangeR){int[] arr = new int[n];for(int i=0;i<n;i++){arr[i] = new Random().nextInt(rangeR-rangeL)+rangeL;}return arr;}// 近乎有序的数组序列public static int[] generateRandomArrayNearOrder(int n,  int swapTimes){int[] arr = new int[n];for(int i=0;i<n;i++){arr[i] = i;}for( int i = 0 ; i < swapTimes ; i ++ ){int posx = new Random().nextInt(n);int posy = new Random().nextInt(n);int temp = arr[posx];arr[posx] = arr[posy];arr[posy] = temp;}return arr;}// 插入排序  将数据插入到已经排好序的数据中static void insertionSort(int arr[], int n){for(int i=1;i<n;i++){//写法1
//          for(int j=i; j>0; j--){
//              if(arr[j] < arr[j-1]){
//                  int temp  = arr[j];
//                  arr[j] = arr[j-1];
//                  arr[j-1] = temp;
//              }else{
//                  break;
//              }
//          }// 写法2
//          for(int j=i; j>0 && arr[j] < arr[j-1]; j--){
//              int temp  = arr[j];
//              arr[j] = arr[j-1];
//              arr[j-1] = temp;
//          }// 写法3int e = arr[i];int j;for(j=i; j>0 && arr[j-1]>e; j--){arr[j] = arr[j-1];}arr[j] = e;}}// 打印数组static void printArray(int arr[], int n) {for(int i=0; i<n; i++){System.out.println(arr[i]+" ");}}public static void main(String[] args){int size = 10000;//arr = generateRandomArray(size, 0, 100000);arr = generateRandomArrayNearOrder(size, 100);long startTime = System.currentTimeMillis();insertionSort(arr,size);long endTime = System.currentTimeMillis();System.out.println(endTime-startTime);//printArray(arr, size);}
}

数据结构:插入排序(Insertion sort)相关推荐

  1. python实现排序算法_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  2. C语言插入排序Insertion Sort算法(附完整源码)

    插入排序Insertion Sort算法 插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 插入排序Insertion Sort算法的完整源码(定义,实现,main函 ...

  3. C语言以递归实现插入排序Insertion Sort算法(附完整源码)

    以递归实现插入排序Insertion Sort算法 以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 以递归实现插入排序Insertion Sort算法的完 ...

  4. python sort 逆序_python实现·十大排序算法之插入排序(Insertion Sort)

    简介 插入排序(Insertion Sort)是一种简单直观的排序算法.它的工作原理是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法实现步骤 从第一个元素开 ...

  5. [转载] python实现基本算法之插入排序(Insertion Sort)

    参考链接: Python中的插入排序insertion sort 基本算法之插入排序(Insertion Sort) 基本算法-02.插入排序(Insertion Sort)算法 冒泡排序已经发布,大 ...

  6. 插入排序(Insertion Sort)-Java实现

    插入排序(Insertion Sort)算法简介: 插入排序是一种丛序列左端开始依次对数据进行排序的算法.在排序过程中,左侧的数据陆续归位,而右侧留下的就是还未被排序的数据. 插入排序(Inserti ...

  7. 插入排序(Insertion Sort)

    维基百科:http://zh.wikipedia.org/wiki/插入排序 算法思想: 若数组A[n]的前n-1个数已经有序,我们只需把第n个元素插入到适当的位置即可.易分析得算法的时间复杂度为Ο( ...

  8. 插入排序Insertion sort 2

    原理类似桶排序,这里总是需要10个桶,多次使用 首先以个位数的值进行装桶,即个位数为1则放入1号桶,为9则放入9号桶,暂时忽视十位数 例如 待排序数组[62,14,59,88,16]简单点五个数字 分 ...

  9. php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...

    本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...

  10. 插入排序 php,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析

    本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...

最新文章

  1. 点击文字弹出一个DIV层窗口代码 【或FORM表单 并且获取点击按钮的ID值】
  2. CSS画基本图形——圆
  3. jsp mysql 分页插件_知识分享:Mybatis框架如何使用分页插件呢?
  4. Java 集合Collection图解
  5. Django models模型
  6. java中钩子方法 addShutdownHook 学习使用
  7. java基础 通过继承Thread类和实现Runnable接口创建线程
  8. 我国企业对开源社区的贡献度_开源对企业有利的6个理由
  9. Higher level thinking
  10. 常见导航菜单实现方式
  11. 获取中国气象台卫星云图
  12. 关于网页视频下载方法及工具
  13. excel制作折线图
  14. 等保2.0中的工业控制系统(ICS)指的是什么
  15. 2021查询高考成绩提前批分数线,快看看!2021高考部分省市“预测分数线”出炉!两点需要注意...
  16. 视频教程-微信小程序商城15天从零实战课程-微信开发
  17. 邻居好说话:冒泡排序
  18. 内农大《嵌入式基础》实验一 Shell编程
  19. 李宏毅老师《机器学习》课程笔记-2.1模型训练技巧
  20. iOS开发网络篇 一一 SDWebImage框架的基本使用

热门文章

  1. session 对象的简单实例
  2. codeforce 603B - Moodular Arithmetic
  3. 使用 ftrace 调试 Linux 内核,第 2 部分
  4. 使用C#调用Python脚本,带参数列表
  5. C#WindowsForm之创建窗体
  6. 记一次工作中的小BUG
  7. 机器学习中涉及的概率论知识回顾(一)
  8. 【JAVA学习笔记】个人设定
  9. 这13个开源GIS软件,你了解几个?【转】
  10. 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能