【发布时间】:2018-03-20 03:48:18
【问题描述】:
参考 Robert 和 Kevin 的 Algorithm - Fourth Edition,我很难按照以下代码理解插入排序的最佳情况复杂性:
public class Insertion
{
public static void sort(Comparable[] a)
{ // Sort a[] into increasing order.
int N = a.length;
for (int i = 1; i < N; i++)
{ // Insert a[i] among a[i-1], a[i-2], a[i-3]... ..
for (int j = i; j > 0 && less(a[j], a[j-1]); j--)
exch(a, j, j-1);
}
}
// See page 245 for less(), exch(), isSorted(), and main().
}
书中说,在最好的情况下(排序数组),交换次数为 0,比较次数为 N-1。虽然我理解交换为 0,但我很难在最佳情况下,比较次数如何为 N-1?
【问题讨论】: