03-插入排序(python、oc)

weixin_33860553發表於2017-09-11

簡述:從下標為1的元素開始往前查詢,依次與前邊的所有元素進行比較,直到與第0個元素比較,找到自己合適的位置後。開始查詢的起始下標+1,重複上一過程。

  • 最優時間複雜度:O(n) (升序排列,序列已經處於升序狀態)
  • 最壞時間複雜度:O(n²)
  • 穩定
python3
# coding:utf-8
def insert_sort(alist):
    """插入排序"""
    n = len(alist)
    for j in range(1,n):
        i = j
        while i > 0:
            if alist[i] < alist[i-1]:
                alist[i], alist[i - 1] = alist[i - 1] , alist[i]
                i -= 1
            else:
                break

if __name__ == "__main__":
    li = [54, 26, 93, 17, 77, 31, 44, 55, 20]
    print(li)
    insert_sort(li)
    print(li)
objective - c
- (void)insert_sort:(NSMutableArray *)arr {
    for (int i = 1; i < arr.count; i++) {
        int j = i;
        while (j > 0) {
            if (arr[j] < arr[j-1]) {
                NSNumber *temp = arr[j];
                arr[j] = arr[j - 1];
                arr[j - 1] = temp;
                j -= 1;
            } else {
                break;
            }
        }
    }
}

相關文章