zoukankan      html  css  js  c++  java
  • [Algorithms] Sort an Array with a Nested for Loop using Insertion Sort in JavaScript

    nsertion sort is another sorting algorithm that closely resembles how we might sort items in the physical world. We start at the second item in our collection and make the assumption that this item is a sorted list of length 1. We then compare all the items before it and determine if it needs to be "inserted" to the left or right of our item. We then move onto the second item, again comparing it to every item before it in the list, inserting those items correctly.

    Because this algorithm requires two loops, one inside the other, the worst case scenario of our algorithm still requires a time complexity of O(n^2). This is also an inefficient sorting algorithm, but if our list is mostly sorted already, it will perform a slight bit better than bubble sort.

    function insertionSort (array) {
        let i = 0
        let j = 0
    
        for (i = 1; i < array.length; i++) {
            for (j = 0; j < i; j++) {
                if (array[i] < array[j]) {
                    const [item] = array.splice(i, 1); // get the item on ith position
                    array.splice(j, 0, item);// insert the item on jth position
                }
            }
        }
    
        return array;
    }
    
    let numbers = [10, 5, 6, 3, 2, 8, 9, 4, 7, 1]
    
    console.log(insertionSort(numbers))
    

      

  • 相关阅读:
    POJ3171 线段树优化dp
    Codeforces Round #590 (Div. 3)
    POJ2777 线段树区间染色问题
    POJ2182 Lost Cows 树状数组,二分
    P1908 逆序对 树状数组
    2019 Multi-University Training Contest 3
    主席树板子题区间第k小
    权值线段树板子题
    KMP板子题
    稀疏贝叶斯
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10153589.html
Copyright © 2011-2022 走看看