#include <iostream> using namespace std; // 冒泡排序 (和鱼冒泡泡一样,从底部往水面冒) void BubbleSort(int A[], int n) { int i, j; // 冒泡中两层循环用到 bool flag; // 判断排序是否结束 for (i = 0; i < n - 1; ++i) { // 冒泡排序因为是将一个个值不停的冒到最终位置(也就是一次冒泡确定一个值的顺序),所以最多就n - 1次冒泡,其实可以试一下10,9,8,7,6,5这个逆序,当第五次冒泡结束后,5就在第一个了,不需要再继续了 flag = false; for (j = 0; j < n - 1 - i; ++j) { if (A[j] > A[j + 1]) { // 如果大的值在前面,则交换 swap(A[j], A[j + 1]); flag = true; } } if (!flag) { return; } } } int main(){ int A[10] = {19, 2, 5, 4, 18, 99, 88, 77, 66, 33}; BubbleSort(A, 10); for (int i = 0; i < 10; ++i) { cout << A[i] << endl; } return 0; }
原文:https://www.cnblogs.com/adamweng/p/14546892.html