插入排序(直接插入)

  今天学习了插入排序,现在将它们整理出来,如果有不对的地方,欢迎批评指正:

  插入排序的思想就是将一个待排数据,按照其大小插入到一个已经排好的数据中的适当位置,知道插入完毕:截了一个图如下:

  

排序的过程就是这样。

代码验证:如图

  

这里的循环我是从最后一个数开始的;代码如下:

function inserSort(arr) {
     for(var i=arr.length-1;i>0;i--) {
         var t = arr[i];
         var p = i-1;
         while(arr[p]>t&&p>=0) {
             arr[p+1] = arr[p];
             p--;
         }
         arr[p+1] = t;
     }
     return arr;
 }
 var a =[3,2,5,1,8];
 console.log(inserSort(a).toString());

每日一句:I want to sleep but my brain won‘t stop talking to itself. (金山词霸每日一句)

翻译:我想睡觉但是我的脑子在不停的自言自语。

时间: 2024-10-04 15:34:49

插入排序(直接插入)的相关文章

排序算法性能比较

算法思路 排序算法 时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 插入排序 直接插入 O(n2) O(n) O(n2) O(1) 是 希尔排序 O(n(logn)2)     O(1) 否 交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 是 快速排序 O(nlogn) O(nlogn) O(n2) O(logn) 否 选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 否 堆排序 O(nlogn) O(nlogn) O(nlogn) O(1) 否 归并排序 归

[转载]从春招到秋招,一个本科生的求职之路。

原文:从春招到秋招,一个本科生的求职之路. 自报家门,北理工软件学院本科生. 主要部分: 1.毕业去向选择 2.春招过程 3.暑期实习 4.秋招辛酸路程 5.一点感悟 1.毕业去向选择问题 从大一开始,就决定毕业找工作,方向是有了,但是三年多过去了,到现在才发现,大学期间并没有为这个方向做出太大的努力,这也成为我一个本科生找工作的很大障碍,实践能力严重不足.我的情况是:我决定工作,但是由于高中的思维,太看重学习成绩,成绩搞的很好,虽然有保研资格,但是又不读研,找工作的时候,好的互联网公司不看成绩

各种排序算法总结篇(高速/堆/希尔/归并)

1.高速排序 交换排序有:冒泡(选择)排序和高速排序,冒泡和选择排序的时间复杂度太高,思想非常easy临时不讨论.高速排序基于一种分治的思想,逐步地使得序列有序. #include <iostream> #include <conio.h> using namespace std; int arrs[] = { 23, 65, 12, 3, 8, 76, 345, 90, 21, 75, 34, 61 }; int arrLen = sizeof(arrs) / sizeof(ar

经典的排序算法

这些天复习了排序这个模块,排序算法在程序员的日常工作中是必不可少的,有时候我们不知不觉就用到了排序,这是因为高级语言系统已经比较完美的封装和优化了排序算法,并且在笔试,面试等方面我们都能见到它的身影.下面结合那本大三的教材:严版的<数据结构>,来说一说这几个经典的排序算法,如果有不对的欢迎指正! 首先我们还是先说基础概念(按书上说的),万变离不开概念,没有概念没有规矩,那可不行. 1:内部排序和外部排序(我们重点说内部排序(因为我们最常用到)) 内排序:在排序的时间数据对象全部存放在内存的排序

排序算法的时空复杂度、稳定性分析

1.基本概念 2.时空复杂度 3.稳定性 4.使用情况分析 排序算法总结(C语言版)已介绍排序算法的基本思想和C语言实现,本文只介绍时空复杂度和稳定性. 1.基本概念 时间复杂度: 一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多.一个算法的语句执行次数称为语句频度或时间频度.记为T(n).n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化.但有时我们想知道它变化时呈现什么规律,为此,引入时间复杂度概念.若有某个辅助函数f(n),使得当n趋近

排序方法的比较

首先给出各个排序方式的性能比较: 排序方法的比较 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 插入排序 直接插入 O(n2) O(n) O(n2) O(1) 稳定 希尔排序 O(n1.3) O(n) O(n2) O(1) 不稳定 选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定 堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 稳

排序算法复杂度速查表

各种常用排序算法 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 插入排序 直接插入 O(n2) O(n) O(n2) O(1) 稳定 Shell排序 O(n1.3) O(n) O(n2) O(1) 不稳定 选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定 堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 稳定 快速排序 O(nlog

【排序算法】(1)排序的稳定性

排序的稳定性 2019-11-10  09:42:11  by冲冲 1.稳定性 ① 定义:能保证两个相等的数,经过排序之后,其在序列的前后位置顺序不变.(A1=A2,排序前A1在A2前面,排序后A1还在A2前面) ② 意义:稳定性本质是维持具有相同属性的数据的插入顺序,如果后面需要使用该插入顺序排序,则稳定性排序可以避免这次排序. 比如,公司想根据“能力”和“资历”(以进入公司先后顺序为标准)作为本次提拔的参考,假设A和B能力相当,如果是稳定性排序,则第一次根据“能力”排序之后,就不需要第二次根

新年在家学java之基础篇--循环&amp;数组

因为“野味肺炎”的肆虐,过年被迫宅家只能吃了睡.睡了吃.这么下次只能长膘脑子空空,不如趁此机会重新学习java基础,为日后做铺垫~ 循环结构: 几种循环:for(::),while(){},do{}while() switch的break,如果不加,会从当前匹配的开始输出一直到最后输出的 break 用在for 也能跳出循环,只能终止当前所在的for循环 continue 结束当前这次循环 return 跟break一样可以终止循环,但是return是结束整个方法,不管有多少层循环 break和

插入排序(直接插入,折半插入,希尔)

1 查看各个项目的Project ID编号 mysql -uroot -h10.10.2xx.xx show databases; use bugfree2; desc bf_TestProject; select ProjectID,ProjectName from bf_TestProject;(查询结果如下) 2 在/var/www/html/bugfree/BugFile路径下创建文件夹 mkdir Project2  Project3  Project4  Project5  Proj