一、测试类SortTest

import java.util.Arrays;

public class SortTest {

  private static final int L = 20;
  public static void main(String[] args) {

    int [] arr = new int[6];
    for (int i = 0; i < arr.length; i++) {
    arr[i] = (int)((Math.random()+1)*L);
    }
    System.out.println(Arrays.toString(arr));
    // new Sort().BubbleSort(arr);
    // new Sort().SelectionSort(arr);
    new Sort().InsertSort(arr);
    System.out.println(Arrays.toString(arr));
  }
}

二、排序类Sort

  /**
  *
  * <h1>直接插入排序</h1>
  * <ul>
  * <li> 1 先假设第一个数是被插入数,同时也是一个有序数组
  * <li> 2 第二个是待插入数
  * <li> 3 待插入数和左边有序数组的最大值比较,如果小于,则进行插入,同时待插入数依次和左边有序数组除了最大值的各个数比较,直至找到一个比它大的数进行插入
  * <li> 4 n-1趟后,排序完毕
  * </ul>
  * @param arr the array
  * @author linzm
  * @since 1.8
  *
  */
public void InsertSort(int[] arr) {
  // 进行length-1趟
  for (int i = 0; i < arr.length-1; i++) {
    int insertIndex = i;// 先假设第一个数是被插入数,同时也是一个有序数组
    int insertVal = arr[i+1];// 第二个是待插入数
  /*
  * {2, 3, 7, 1}
  * first:2, 3, 7, 7
  * second:2, 3, 3, 7
  * third:2, 2, 3, 7
  *finally:1, 2, 3, 7
  */
  while(insertIndex >= 0 && insertVal < arr[insertIndex]) {
    arr[insertIndex + 1] = arr[insertIndex];
    insertIndex --;
    }
  arr[insertIndex +1] = insertVal;
  }
}

仅供参考,有错误还请指出!

有什么想法,评论区留言,互相指教指教。

Java排序算法(三)直接插入排序的更多相关文章

  1. Java排序算法(三):直接插入排序

    [基本思想] 关键:在前面已经排好序的序列中找到合适的插入位置 步骤: 1. 从第一个元素開始,该元素能够觉得已经排好序. 2. 取出下一个元素.在已经排好序的元素序列中从后往前扫描进行比較. 3. ...

  2. python实现排序算法三:插入排序

    插入排序基本思想:假设一个无序数组A,则对于只有一个元素A[0]的子数组C来讲,其是有序的,然后将A[1]插入到C中,则就是将A[1]与A[0]进行比较,如果A[1]比A[0]小,则交换两者的顺序,这 ...

  3. Java常见排序算法之直接插入排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  4. java排序算法(六):直接插入排序

    java排序算法(六):直接插入排序 直接插入排序的基本操作就是将待的数据元素按其关键字的大小插入到前面的有序序列中 直接插入排序时间效率并不高,如果在最坏的情况下,所有元素的比较次数的总和为(0+1 ...

  5. Java排序算法(三)

    Java排序算法(三) 三.Java排序算法总结 从这三组时间复杂度对比中,可以看出,堆排序和归并排序是不管在什么情况下发挥稳定的,快速排序好的时候表现如天才,坏情况下比较差强人意,甚至在等待排序个数 ...

  6. Java常见排序算法之折半插入排序

    在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...

  7. java排序算法(七):折半插入排序

    java排序算法(七):折半插入排序 折半插入排序法又称为二分插入排序法,是直接插入排序法的改良版本,也需要执行i-1趟插入.不同之处在于第i趟插入.先找出第i+1个元素应该插入的位置.假设前i个数据 ...

  8. java排序算法(三):堆排序

    java排序算法(三)堆排序 堆积排序(HeapSort)是指利用堆积树这种结构所设计的排序算法,可以利用数组的特点快速定位指定索引的元素.堆排序是不稳定的排序方法.辅助空间为O(1).最坏时间复杂度 ...

  9. 排序算法之直接插入排序Java实现

    排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb  选择排序:http://t.cn/hros6e  插入排序: ...

  10. 排序算法三:Shell插入排序

    排序算法三:Shell插入排序 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 引言 在我的博文<"主宰世界"的10种算法短评> ...

随机推荐

  1. pytorch模型结构可视化,可显示每层的尺寸

    最近在学习一些检测方面的网络,使用的是pytorch.模型结构可视化是学习网络的有用的部分,pytorch没有原生支持这个功能,需要找一些其他方式,下面总结几种方法(推荐用4). 1. torch . ...

  2. Qt开发的应用记录读取用户习惯设置的方法

    Qt开发的应用记录读取用户习惯设置的方法 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/w ...

  3. python的默认参数的一个坑

    前言 pass 正文 在 https://docs.python.org/3/tutorial/controlflow.html#default-argument-values 中,有这样一段话 Im ...

  4. Scrapy使用RabbitMQ做任务队列

    前言 一个月没更博客了,这个月也搞了不少东西,但是公司对保密性要求挺高,很多东西都没有办法写出来 想来想去,还是写一篇最近写Scrapy中遇到的跳转问题 如果你的业务需求是遇到301/302/303跳 ...

  5. Docker 镜像基础(三)

    基于Dockerfile制作yum版本nginx镜像 [root@node-2 ~]# mkdir /opt/nginx [root@node-2 ~]# cd /opt/nginx/ ## 创建Do ...

  6. selenium自动化 | 实现抢课功能

    # -*- coding: utf-8 -*-"""Created on Wed Jan 1 23:39:34 2020@author: billie程序运行环境要求:- ...

  7. 【Linux】查看系统僵尸进程

    ps -ef|grep -v grep|grep defunct 如果这个有显示内容的话,可以手动将进程kill掉即可 ---------------------------------------- ...

  8. oracle 12C单实例打PSU

    前提: oracle不管打什么样的补丁,readme都是很好的参考资料. Oracle每季度都会更新一个最新的PSU,现在12.1.0.2.0的最新的PSU是Patch 26925311. 由于今天白 ...

  9. CMU数据库(15-445)Lab0-环境搭建

    0.写在前面 从这篇文章开始.开一个新坑,记录以下自己做cmu数据库实验的过程,同时会分析一下除了要求我们实现的代码之外的实验自带的一些代码.争取能够对实现一个数据库比较了解.也希望能写进简历.让自己 ...

  10. python--or 和 and 表达式

    or表达式: 两边为一真一假,返回真: 两边都为假,返回右边: 两边都为真,返回左边: and表达式: 两边为一真一假,返回假: 两边都为假,返回左边: 两边都为真,返回右边: