尚硅谷数据结构与算法(Java)--14--插入排序
:插入排序
- 插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。
- 插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。
- 其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。
图片链接https://www.runoob.com/wp-content/uploads/2019/03/insertionSort.gif
package com.atguigu.sort;import java.text.SimpleDateFormat;
import java.time.Clock;
import java.util.Arrays;
import java.util.Date;public class InsertSort {public static void main(String[] args) {int[] arr = { 101, 34, 119, 1, 58, 60, 59,-1 };// { 101, 34, 119, 1}第一轮 {34,101, 119, 1}System.out.println("排序前:\n" + Arrays.toString(arr));insertSort(arr);System.out.println("排序后:\n" + Arrays.toString(arr));timeSort();}// 插入排序public static void insertSort(int[] arr) {for (int i = 1; i < arr.length; i++) {// 定义待插入的数字int insertVal = arr[i];int insertIndex = i - 1;// insertIndex 即 arr【i】前面数的下标/** 给insertVal 找到插入的位置 说明 1.insertIndex 》= 0,保证不越界 2.insertVal <arr[insertIndex]* 表示待插入的数还没找到位置 3.将arr[insetIndex]后移*/while (insertIndex >= 0 && insertVal < arr[insertIndex]) {arr[insertIndex + 1] = arr[insertIndex];insertIndex--;}// 当退出while循环,表示插入的位置找到,insertIndex + 1//判断是否需要赋值if(insertIndex + 1 != i) {arr[insertIndex + 1] = insertVal;}System.out.println("第" + (i ) + "轮插入排序后~~"+", 目前有序数组内前"+(i+1)+"个元素已排好序");System.out.println(Arrays.toString(arr));}}// 耗时测试public static void timeSort() {// 测试排序的速度(O(n^2)),给80000个数据// 创建一个80000个随机数的数组int[] arr = new int[80000];for (int i = 0; i < 80000; i++) {arr[i] = (int) (Math.random() * 8000000);// 生成一个【0,8000000】数}//获取排序前时间long s = Clock.systemDefaultZone().millis();insertSort(arr);//打印总耗时间System.out.println("八万个随机数据【插入排序】耗时: " + (Clock.systemDefaultZone().millis() - s) + " ms");}}
尚硅谷数据结构与算法(Java)--14--插入排序相关推荐
- 尚硅谷数据结构与算法(Java)--17--归并排序
:归并排序 归并排序是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用. 将已有序的子序列合并,得到完全有序的序列:即先使每个 ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 1 数据结构与算法概述
Chapter 1 数据结构与算法概述 文章目录 Chapter 1 数据结构与算法概述 1.1.1 数据结构和算法的关系 1.2.1 线性结构 1.2.2 非线性结构 尚硅谷数据结构B站学习视频地址 ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 4 栈
Chapter 4 栈 文章目录 Chapter 4 栈 4.1 栈 4.1.1 栈的介绍 4.1.2 数组模拟栈 4.1.3 练习:用链表模拟栈 4.1.4 例题:用栈完成表达式计算(中缀表达式) ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 3 链表
Chapter 3 链表 文章目录 Chapter 3 链表 3.1 链表 3.1.1 链表介绍 3.1.2 链表CRUD 3.1.3 单链表题目 3.2 双向链表 3.2.1 双向链表介绍 3.2. ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 5 递归
Chapter 5 递归 文章目录 Chapter 5 递归 5.1 递归概念 5.2 递归的调用机制 5.3 迷宫问题(回溯) 5.4 八皇后问题(回溯) 5.1 递归概念 递归好就是方法自己调用自 ...
- 【自学笔记】尚硅谷数据结构与算法Chapter 2 稀疏数组和队列
Chapter 2 稀疏数组和队列 文章目录 Chapter 2 稀疏数组和队列 2.1 稀疏数组 2.1.1 基本介绍 2.1.2 应用案例 2.2 队列 2.2.1 队列介绍 2.2.2 用数组模 ...
- 尚硅谷数据结构和算法01-数据结构介绍和稀疏数组
文章目录 一.数据结构组成 1.线性结构 2.非线性结构 二.稀疏数组 1.应用场景: 2.稀疏数组转换的思路分析 3.代码实现 补充: %d\t 一.数据结构组成 包括:线性结构和非线性结构 1.线 ...
- 数据结构和算法(Java)-张晨光-专题视频课程
数据结构和算法(Java)-579人已学习 课程介绍 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的 ...
- 视频教程-内功修炼之数据结构与算法-Java
内功修炼之数据结构与算法 2018年以超过十倍的年业绩增长速度,从中高端IT技术在线教育行业中脱颖而出,成为在线教育领域一匹令人瞩目的黑马.咕泡学院以教学培养.职业规划为核心,旨在帮助学员提升技术技能 ...
- 数据结构与算法-java笔记一 更新中
数据结构与算法-java笔记一 更新中 数据结构与算法 什么是数据结构.算法 数据结构学了有什么用: 线性结构 数组 特点 应用 链表 存储结构 链表类型 单链表 双向链表 双向循环链表 链表与数组的 ...
最新文章
- 简单天气应用开发——基本功能完成
- 配置文件值注入 ||导入配置文件处理器,以后编写配置就有提示
- 网络安全系列之三十五 缓冲区溢出
- JavaScript:语言精粹
- Javascript远程加载框架 - JFO Remote Framework 1.0
- 九度OJ 1035:找出直系亲属(二叉树)
- 蚂蚁区块链第19课 联盟链创建及管理
- 阿里的数据同步神器——Canal
- 运筹优化算法工程师面试汇总
- Charles 模拟慢网络
- 【VB.net】大地测量——白塞尔大地解算程序设计
- python安装结巴_python jieba(结巴)小模块精讲
- 如何制作校园平面图及路线导图
- 每天五分钟机器学习:评价算法模型常用的数值评估方式——F1值
- Vue实现图形化积木式编程(十三)
- 小程序如何cdn加速服务器,小程序游戏加速方案
- html5 3d引擎 星空,使用3D引擎threeJS实现星空粒子移动效果
- kali安装flash player
- Android app集成友盟微社区详细步骤
- 如何寻找数组中最大值与最小值(取双元素法)