美文网首页程序员
简单算法之插入排序

简单算法之插入排序

作者: 老邵 | 来源:发表于2018-09-06 20:20 被阅读17次

    有一群人,假设每个人的身高都不同,现在需要根据他们的身高由低到高进行排序。相信每个人都会很容易完成这个任务。方法不一,每个人都会选择自己的方法。每种方法的效率不尽相同,但都有成效。

    一种方法是这样的:首先让这群人随意排成一队,然后第一个人站着不动,第二个人和自己的前一位比较(也就是第一位)。如果第二个人比前面的人矮,就与前面的人换位置,如果比前面的人高或相同,则站着不动。

    第三个人和第二个人一样,只不过可能会比第二个人多一步。第三个人先与前面的人比较,如果他比前面的人矮就与前面的互换位置,换了位置后再与此时前面的人比较,直到前面的人比自己矮或前面没有任何人了。

    这种方法抽象出来,就是编程中的插入排序。以 js 代码为例,具体代码如下:

    1

    let arr = [1,11,7,3,5,8,4,9]
    for(let i = 1;i < arr.length;i++){
      let store = arr[i];
       let j = i-1;
      while(j > 0 && arr[j] > store) {
        let mid = arr[j+1];
         arr[j+1] = arr[j];
         arr[j] = mid;
        j--;
        }
    }
    console.log(...arr);
    

    2

      let arr = [1,11,7,3,5,8,4,9]
     for(let i = 1;i < arr.length;i++){
     let store = arr[i];
     let j = i-1;
     while(j > 0 && arr[j] > store) {
         arr[j+1] = arr[j];
         j--;
     }
     arr[j+1] = store;
    }
    console.log(...arr);
    // 1 3 4 5 7 8 9 11
    

    上面两种方法思路是相似的,只不过数字交换的方式有点差别。

    相关文章

      网友评论

        本文标题:简单算法之插入排序

        本文链接:https://www.haomeiwen.com/subject/inoxgftx.html