【发布时间】:2015-11-22 23:14:52
【问题描述】:
我试图了解所有交换算法中最简单的一种,即冒泡排序。然而,我似乎对实际交换值的步骤感到困惑,例如考虑代码:
void bubbleSort(int arr[], int n) {
bool swapped = true;
int j = 0;
int tmp;
while (swapped) {
swapped = false;
j++;
for (int i = 0; i < n - j; i++) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
swapped = true;
}
}
}
}
假设我有一个这样的数字列表:
7 1 3 4 6 3 5
我想交换前两个值,7 和 1:
按照我的逻辑,我是这样理解这段代码的:
设置一个临时变量等于 7,所以
temp = 7;
设置 7 等于下一个值,所以
7 = 1;
?
目前的名单是:
1 1 3 4 6 3 5
Where temp = 7
现在设置 1 等于 temp,即 7? 1 = 温度;
So the list is now:
1 7 3 4 6 3 5
我的理解正确吗?
【问题讨论】:
-
是的。继续这样做,直到全部排序为止。
-
是的,你是对的。看en.m.wikipedia.org/wiki/Bubble_sort
标签: c++ algorithm bubble-sort