Chapter 2 Getting Started

本文详细介绍了插入排序算法的基本原理,包括其输入输出定义、伪代码实现、循环不变性及其正确性的分析,并探讨了不同情况下的时间复杂度,如最好与最坏情况。此外,还概述了算法分析中增长阶的概念,并引入了分治法的设计思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.1 Insertion sort

    Input: A sequence of n numbers <a1, a2, ... , an>.

    Output: A permutation (reordering) <a1', a2', ... , an'> of the input sequence such that a1' <= a2' <= ... <= an'.

  Insertion-Sort(A)
  for j <- 2 to length(A)
    do key = A[j]
     //Insert A[j] into the sorted sequence A[1...j-1]
       i <- j - 1
       while i > 0 and A[i] > key
         do A[i+1] = A[i]
            i <- i - 1
       A[i + 1] <- key

    Loop invariants and the correctness of insertion sort.(Initialization, Maintennance, Termination)

    Pseudocode conventions.

2.2 Analyzing algorithms

        We shall assume a generic one-processor, random-access machine (RAM) model of computation as our implementation technology.

    Analysis of insertion sort

         The best case: (the array is already sorted) O(n)

         The worst case: (the array is in reverse sorted) O(n2)

    Order of growth

         We usually consider one algorithm to be more efficient than another if its worst-case running time has a  lower order of growth.

2.3 Designing algorithms

    2.3.1 The divide-and-conquer approach

        Divide the problem into a number of subproblems.

        Conquer the subproblems by solving them recursively.

        Combine the solutions to the subproblems into the solution for the original problem。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnlxj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值