我正在阅读Robert Sedgewick所着的算法书。
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);
}
}
以上是java中的插入排序实现。在这里,作者提到了改进如下。
通过缩短内部循环以将较大的条目移动到正确的位置而不是进行完全交换(从而将数组访问次数减少一半),大大加快插入排序并不困难。
我很难理解上面的改进。
是作者的意思以简单示例请求示例以便更好地理解。
答案 0 :(得分:3)
我认为他指的是你不需要继续实际交换元素,因为你最终会反复移动相同的元素。
例如,您可以最初缓存module MessagesHelper
def self_or_other(message)
message.user == current_user ? "current-user-message" : ""
end
end
- 元素的值,并在内部循环中直接引用它:
i