【发布时间】:2014-05-15 06:14:19
【问题描述】:
我遇到了这些用于排序的示例,我对这里的后缀和前缀感到很困惑——为什么它使用最后一个——但这里是 ++currIndex?在第二个例子中,它只使用了 ++pass 和 ++index?这些在排序中重要吗?非常感谢!
for (int last = n-1; last >= 1; last--) {
int largest = indexOfLargest(theArray, last+1);
int temp = theArray[largest];
swap theArray[largest] = theArray[last];
theArray[last] = temp;
}
private static int indexOfLargest(int[] theArray, int size) {
int indexSoFar = 0;
for (int currIndex = 1; currIndex < size; ++currIndex) {
if (theArray[currIndex]>theArray[indexSoFar])
indexSoFar = currIndex;
}
return indexSoFar;
示例 2:
for (int pass = 1; (pass < n) && !sorted; ++pass) {
sorted = true;
for (int index = 0; index < n-pass; ++index) {
int nextIndex = index + 1;
if (theArray[index]>theArray[nextIndex]) {
int temp = theArray[index];
theArray[index] = theArray[nextIndex];
theArray[nextIndex] = temp;
}
【问题讨论】:
-
在 for 循环中(增量部分),使用后缀 (var++) 或前缀 (++var) 不会改变任何内容。
-
使用
pass++或++pass都没有关系。如果使用a=++pass和a=pass++则很重要,那么对于这两个语句,a的值将不同。