// InsertSort 插入排序
// 思路:
// 1. 第一个元素默认是已经排好序的
// 2. 从第二个元素开始,依次比较前面一个元素中,如果小于则交换位置
// 插入排序思路: 将一个元素插入到已经排好序的序列中 // 插入排序对比冒泡排序
// 插入排序是将元素在已经排好序的元素中交换位置
// 冒泡排序是在未排好序的元素中交换我位置 func InsertSort(data []int) {
// i是添加新的排序元素
for i := 0; i < len(data); i ++ {
tmp := data[i]
for j := i; j >= 0 ; j -- {
// 放到第一个
if j == 0 {
data[0] = tmp
break
}
if data[j-1] > tmp {
data[j] = data[j-1]
} else {
// 放到最后一个
data[j] = tmp
break
} } }
}

  

Go-插入排序的更多相关文章

  1. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  2. Html5 直接插入排序

    直接插入排序算法(Straight Insertion Sort),是排序算法中简单的一种算法,基本思想如下: 将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表.即:先将序列的第 ...

  3. python排序之一插入排序

    python排序之一插入排序 首先什么是插入排序,个人理解就是拿队列中的一个元素与其之前的元素一一做比较交根据大小换位置的过程好了我们先来看看代码 首先就是一个无序的列表先打印它好让排序后有对比效果, ...

  4. java基础算法之插入排序

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

  5. [LeetCode] Insertion Sort List 链表插入排序

    Sort a linked list using insertion sort. 链表的插入排序实现原理很简单,就是一个元素一个元素的从原链表中取出来,然后按顺序插入到新链表中,时间复杂度为O(n2) ...

  6. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

  7. 经典排序算法 – 插入排序Insertion sort

    经典排序算法 – 插入排序Insertion sort  插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...

  8. C语言中的插入排序(2016-12-30)

    直接插入排序: 算法思想:假设待排序的记录存放在数组R[1--n]中,初始时,i=1,R[1]自成一个有序区,无序区为R[2--n].然后从i=2起直到i=n,依次将R[i]插入当前的有序区R[1.. ...

  9. JavaScript算法(冒泡排序、选择排序与插入排序)

    冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ...

  10. 基本排序算法——插入排序java实现

    插入排序过程: 在初始状态下,第一个元素是排序的,在最终状态下,作为一组数据时排序的. 代码如下;eclipse4.3实现 package sort.basic; import java.util.A ...

随机推荐

  1. ElasticSearch之cat thread pool API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/thread_pool?v=true&pretty" --cacert $ ...

  2. Python——第四章:函数的递归调用

    递归:  函数自己调用自己 递归如果没有任何东西拦截的话. 它默认就是一个死循环 def func() func() func() 因此递归调用的时候需要有判断,来退出循环 def func() if ...

  3. window10 AppX Deployment Service (AppXSVC)占用大量内存导致资源管理器卡死无响应

    window10 AppX Deployment Service (AppXSVC)占用大量内存导致资源管理器卡死无响应,导致无法进入桌面打开软件等等. 1.打开任务管理的情况下,先结束卡死的资源管理 ...

  4. Head First 的学习之道

    <Head First 设计模式>是一本好书,正如书的封面上说的那样,这是一本重视大脑的学习指南.里面提到了一些学习方法,可以尝试下,看看哪些对你有用: 1. 慢一点,理解的越多,需要记得 ...

  5. 解读8大场景下Kunpeng BoostKit 使能套件的最佳能力和实践

    摘要:本次鲲鹏 BoostKit 训练营为开发者介绍如何基于鲲鹏 BoostKit 使能套件实现应用性能的加速,并重点剖析性能优化技术和关键能力. 本文分享自华为云社区<[云驻共创]" ...

  6. 带你深入理解Java的IO到底是个啥

    摘要:操作系统就是管家,电脑的设备就是资源,如果进程先要操作资源,必须要进行系统调用,有操作系统去处理,然后再返回给进程,这样的代理模式是不是很常见?因此app 就是你写的程序,资源就是硬盘或者其他的 ...

  7. 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...

  8. Mac 向日葵设置

  9. MyBatis ORA-01465: 无效的十六进制数字

    MyBatis 在插入 Oralce 时报:ORA-01465: 无效的十六进制数字 解决方法: # 插入或更新时 String -> BLOB字段:RAWTOHEX(#{字段名}) Strin ...

  10. 【Java 进阶】Java8 新特性的理解与应用

    [进阶]Java8新特性的理解与应用 前言 Java 8是Java的一个重大版本,是目前企业中使用最广泛的一个版本. 它支持函数式编程,新的Stream API .新的日期 API等一系列新特性. 掌 ...