概念:略...
小提示:假设从小排到大的方式,一轮比较下来最大的值就会跑到末尾位置,再次进行二轮比较后最大值排在末尾倒数第二位,依次类推...
所以就得出 for 的判定条件是 j < cnt - 1 - i;
// 冒泡排序
for (int i = 0; i < cnt; ++i)
{
for (int j = 0; j < cnt - 1 - i; ++j)
{
if (arr[j] > arr[j + 1]) // 从小排到大
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
2、完整代码
#includeusing namespace std; // 主函数 int main(int argc, char *argv[]) { int arr[] = { 1,3,5,7,9,2,4,6,8 }; // 待排序数组 int cnt = sizeof(arr) / sizeof(int); // 数组长度 // 冒泡排序 for (int i = 0; i < cnt; ++i) { for (int j = 0; j < cnt - 1 - i; ++j) { if (arr[j] > arr[j + 1]) // 从小排到大 { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // 打印数组 for (int i = 0; i < cnt; ++i) { cout << arr[i] << " "; } cout << endl; return 0; }
调试结果



