在学习算法的过程中,我们难免会接触很多和排序相关的算法。总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的。

从今天开始,我们将要进行基本的排序算法的讲解。Are you ready?Let‘s go~~~

直接插入排序概念讲解:

直接插入排序的做法是:每次从无序表中取出第一个元素,插入到有序表的合适位置,使有序表仍然有序

第一趟比较前2个数然后把第二个数按大小插入到有序表中,第二趟把第三个数与前2个数从前向后扫描,把第三个数按大小插入到有序表中,依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。

直接插入排序是由两层嵌套循环组成的,外层循环标识并决定待比较的数值,内层循环为待比较数值确定其最终位置,直接插入排序是将待比较的数,与它前一个数值进行比较,所以外层循环是从第二个数值开始的,当前一个数值比较大的情况下循环继续比较,直到找到比待比较数值小的,并将待比较数值置入其 后一位置,结束该次循环。

排序方法
1.简单方法
首先在当前有序区R[1..i-1]中查找R[i]的正确插入位置k(1≤k≤i-1);然后将R[k..i-1]中的记录均后移一个位置,腾出k位置上的空间插入R[i]。
注意:若R[i]的关键字大于等于R[1..i-1]中所有记录的关键字,则R[i]就是插入原位置。
直接插入排序的Java代码实现
package com.yonyou.test;/*** 内部排序算法之直接插入排序* 默认按照从小到大进行排序操作*/
public class Test{public static void main(String[] args) {//需要进行排序的数组int[] array=new int[]{8,3,2,1,7,4,6,5};//输出原数组的内容printResult(array);//直接插入排序操作directInsertSort(array);//输出排序后的相关结果printResult(array);}/*** 直接插入排序的方法* @param array*/private static void directInsertSort(int[] array) {for(int i=0;i<array.length;i++){for(int j=0;j<i;j++){if(array[i]<array[j]){int temp=array[i];System.arraycopy(array,j,array,j+1,i-j);array[j]=temp;}}}}/***                                       * 输出相应数组的结果* @param array*/private static void printResult(int[] array) {for(int value:array)    System.out.print(" "+value+" ");System.out.println();}/*** 交换数组中两个变量的值* @param array* @param i* @param j*/private static void swap(int[] array,int i,int j){int temp=array[i];array[i]=array[j];array[j]=temp;}
}

  

转载于:https://www.cnblogs.com/yb90/p/10017065.html

java八种排序算法---直接插入排序相关推荐

  1. Java 八种排序算法比较实践

    写这篇文章是因为面试时经常会问这个问题,但是工作中也没用到过,所以一直是一知半解.但是我是属于比较较真的人,这次下定决心要把它们搞明白.知识在于积累,多点知识对自己总是有好处的. 我比较好奇的是,这几 ...

  2. Java常用的八种排序算法与代码实现

    在Java的时候,对于排序的应用需要熟练的掌握,这样才能够确保Java学习时候能够有扎实的基础能力.那Java有哪些排序算法呢?本文小千就来详细说说Java经典的8种排序算法. 经典的排序算法有八种, ...

  3. 八种排序算法动画讲解

    思维导图 前言 算法和数据结构是一个程序员的内功,所以经常在一些笔试中都会要求手写一些简单的排序算法,以此考验面试者的编程水平!动图来源于今日头条.动图来源于今日头条.动图来源于今日头条! 1.冒泡排 ...

  4. 归并排序改良 java_Java 八种排序算法总结

    image 前言 好久没复习基础了,写个冒泡排序都要想一会.感觉自己好像老了好多,今天手痒总结一下排序算法.目前网上博客普遍都有详细介绍,写的很清楚.说实话我是没必要再写一遍的,感觉就是在啰嗦.还是重 ...

  5. 八种排序算法的时间复杂度复杂度

    https://www.cnblogs.com/dll-ft/p/5861210.html 转载 1.稳定性 归并排序.冒泡排序.插入排序.基数排序是稳定的 选择排序.快速排序.希尔排序.堆排序是不稳 ...

  6. java排序算法代码_Java实现八种排序算法(代码详细解释)

    package八大排序算法;importjava.util.Arrays;importorg.junit.Test;/*** 1.插入排序 直接插入排序.希尔排序 折半插入排序 * 2.交换排序 冒泡 ...

  7. java实现八种排序算法并测试速度(详细)

    算法代码: /*** Created by CLY on 2017/3/17.*/ package pers.cly.sorting; /*** 排序工具类,里面包含各种排序方法*/ public c ...

  8. 一遍记住Java常用的八种排序算法与代码实现

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:KaelQ www.jianshu.com/p/5e1712 ...

  9. 【基础不牢地动山摇】一遍记住 Java 面试中常用的八种排序算法与代码实现!...

    作者:KaelQ www.jianshu.com/p/5e171281a387 1.直接插入排序 经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中. 将第一个数和第二个数排序,然后构成一个 ...

最新文章

  1. C和C++安全编码笔记:指针诡计
  2. spark VS Hadoop 两大大数据分析系统深度解读
  3. mysql myisam
  4. spring boot中使用Pagehelper实现分页
  5. Byte数组转换成string 的方法积累
  6. kafka指定分区消费
  7. 商业认知,你每天出门看天气吗?
  8. 2019服务器部署文件管理,在 Windows Server 2019 中部署文件共享见证 | Microsoft Docs
  9. create-react-app 创建react应用环境变量(env)配置
  10. android84 广播接受者
  11. TCPIP详解之udp
  12. 蓝牙耳机测试软件apk_AndPods蓝牙耳机管理器.apkv1.5.2 免费版 Android
  13. 数学四大思想八大方法_中考数学专题五,四种数学思想方法,第3个比较难掌握...
  14. Java入土---面向对象(OOP)
  15. 使用HiFlow场景连接器查看每天处于地区的疫情
  16. 一秒解决win10电脑自动黑屏问题
  17. Java实现 LeetCode 403 青蛙过河
  18. Filter过滤器导致CSS样式失效
  19. 屏蔽Mac版迅雷更新提醒
  20. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

热门文章

  1. lnmp环境搭建:Centos7 + Nginx1.12.2 + Mysql-5.6.38 + PHP7.2.0
  2. C++手动实现库函数
  3. ubuntu文件、目录操作基本命令
  4. M2第五天DailyScrum——PM(李忠)
  5. 如何使用PHP编写daemon process
  6. 用SDL创建一个窗口
  7. linux GPIO驱动详解
  8. centos 卸载docker_Spring Boot学习05_Docker卸载与安装
  9. EMR集群安全认证和授权管理
  10. 回顾 | Apache Flink 1.13 新版本 x 互娱实践分享 Meetup · 北京站精彩回顾 (附 PPT 下载)