插入排序(直接插入)

简介:   今天学习了插入排序,现在将它们整理出来,如果有不对的地方,欢迎批评指正:  插入排序的思想就是将一个待排数据,按照其大小插入到一个已经排好的数据中的适当位置,知道插入完毕:截了一个图如下:       排序的过程就是这样。

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

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

  

     排序的过程就是这样。

     代码验证:如图

  

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

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. (金山词霸每日一句)

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

     

目录
相关文章
|
5月前
|
算法
删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n)
删除有序数组中的重复项。要求空间复杂度O(1),++时间复杂度O(n)
30 0
|
11月前
|
搜索推荐 Java
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
27 0
|
5月前
|
搜索推荐 测试技术
排序算法-插入/希尔排序
排序算法-插入/希尔排序
21 0
|
5月前
|
存储 人工智能 搜索推荐
浅谈归并排序:合并 K 个升序链表的归并解法
在面试中遇到了这道题:如何实现多个升序链表的合并。这是 LeetCode 上的一道原题,题目具体如下:
72 0
浅谈归并排序:合并 K 个升序链表的归并解法
堆/选择/插入/希尔排序
堆/选择/插入/希尔排序
47 0
二分法查找(折半查找)
二分法查找(折半查找)
61 0
二分法查找(非递归)
二分查找法是查找算法里面,经典又比较简单的一种。它适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再查找。 二分查找法的运行时间为对数时间O(㏒₂n),即查找到需要的目标位置最多只需要㏒₂n 步。假设从[0, 99]的队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 26 < 100 < 27)。
已知数据序列为(12,5,9,20,6,31,24),对该数据序列进行排序,写出插入排序、冒泡排序、快速排序、简单选择排序、堆排序以及二路归并排序每趟的结果。
已知数据序列为(12,5,9,20,6,31,24),对该数据序列进行排序,写出插入排序、冒泡排序、快速排序、简单选择排序、堆排序以及二路归并排序每趟的结果。
216 0
|
搜索推荐 算法 C++
C++实现排序 - 01 冒泡、选择、插入和希尔排序
从这一讲开始,我们整理一下常见的十大排序算法,可以按照它们的时间复杂度进行大致的分类。今天先来讲讲平均时间复杂度为 O(n^2^) 的四个排序算法。
144 0
C++实现排序 - 01 冒泡、选择、插入和希尔排序