javascript 排序算法之選擇排序、插入排序

版權聲明:本文爲博主原創文章,未經博主容許不得轉載。javascript

javascript 選擇排序、插入排序

選擇排序

選擇排序的基本思想:選擇排序是一種相對來講比較簡單的排序算法,基本思路是從數組的第一個元素開始,比較第一個元素的和其餘元素的大小,而後把最小的一個元素和第一個元素交換,而後再進行的第二次排序,從第二個元素開始,比較第二個元素和其餘元素的大小,再把第二個元素,和以後的元素進行比較,同理把最小的一個元素放在第二個元素的位置,以此類推,一直到數組的倒數第二個元素,到此爲止,排序完畢,下面是引用的一張百度的圖片,個將選擇排序表達的比較清楚。java

圖片描述

附上具體的代碼實現(javascript數據結構與算法):算法

/**
** 數據元素交換
**/

function swap(arr, t1, t2){
    let temp = arr[t1];
    arr[t1] = arr[t2];
    arr[t2] = temp;
}

function selectSort(arr) {
    var minIndex;
    for(var i=0;i<arr.length;i++){
        minIndex = i;
        for(var j=i+1;j<arr.length; j++) {
            if(arr[j] < arr[i]){
                minIndex = j;
            }
            swap(arr, i, minIndex);
        }
    }
}

時間複雜度

O(n^2)數組

插入排序

插入排序基本思想: 通俗一點,好比在咱們在鬥地主的時候,開始摸到的牌都是亂的,而後咱們按照必定的順序整理撲克牌,就是根據牌的大小插入到合適的位置,下面引用一個圖片,用來講明插入排序的算法:
圖片描述數據結構

圖片詳解:
(1) 首先對於第一個元素53,咱們保持不動;
(2)下面咱們看27這個元素,咱們要作的是把27這個元素和前面的元素比較,27<53,因此27和53交換位置;
(3)36和前面的元素比較: 36<53,因此36和53交換位置,再將36和和前面的元素比較,36>23 因此36就應該插入再27和53之間;
以此類推,直到最後一個元素插入到合適的位置,該數組排序完畢;
代碼實現:spa

function insertionSort(arr) {
    var temp, inner;
    for (var outer = 1; outer <= arr.length - 1; ++outer) {
        temp = arr[outer];
        inner = outer;
        while (inner > 0 && (arr[inner - 1] >= temp)) {
            arr[inner] = arr[inner - 1];
            --inner;
        }
    arr[inner] = temp;
}
}

時間複雜度

  1. 最壞的狀況下: 數組徹底逆序[5,4,3,2,1] 這種狀況下時間複雜度爲O(n^2);
  2. 最好的狀況下: 數組是按順序排列的[1,2,3,4,5],這種狀況下的時間複雜度爲O(n)。
相關文章
相關標籤/搜索