演算法初級 插入排序

2021-10-20 08:09:05 字數 698 閱讀 5666

插入排序的核心是將標記元素左側視為有序(即已經排序好的元素),然後用標記元素與左側元素從右往左進行比較,若比較元素比標記元素大,則兩者交換位置,直到左側比較元素比標記元素小,則迴圈結束,即將標記元素插入該位置

private

long

a;private

int nelems;

public

void

insertionsort()

a[in]

= temp;

//標記元素插到指標指向位置

}}

最外層迴圈,out從1開始,與0號元素進行比較並插入,即視為0號元素為有序,後面以此類推。

插入排序的演算法效率:

在第一次排序,最多比較一次,

在第二次排序,最多比較兩次

。。。最後一次最多,一共比較n-1次(n為陣列長度即元素個數)

所以–>

1+2+3+…+n-1=n*(n-1)/2

然而,平均每次真的比較的次數只有一半,所以除以2得到n*(n-1)/4

複製的次數大致等於比較的次數,然而,複製和比較的時間耗費不同,所以相對隨機資料,這個演算法比氣泡排序快一倍,比選擇排序略快。

但是時間級還是o(n2)。

但是如果資料基本有序,那麼while的條件基本為假,所及成了乙個簡單的一次迴圈,執行n-1次。這種情況下,時間複雜度為o(n)。

Java初級排序演算法 選擇排序 插入排序 希爾排序

package sort import edu.princeton.cs.algs4.in public class example private static boolean less comparable v,comparable w private static void exch comp...

初級排序演算法之選擇排序和插入排序

前情摘要 現在我們學了一些基礎的資料結構,如鍊表,佇列,棧,等等。現在我們開始學習一些非常基礎的排序演算法。今天我們要講的是選擇排序,插入排序以及對插入排序的優化 希爾排序。選擇排序 基礎原理 比如說我們的輸入模型是有限的陣列,對陣列中的元素進行排序。對於選擇排序來說就是從該陣列中找出第乙個最小的元...

演算法筆記2 初級排序 插入排序和希爾排序

插入排序 author xy suppresswarnings rawtypes public class insertsort public static void sort comparable v,int lo,int hi public static boolean less compara...