C/C++语言重温------冒泡排序
一、数组的冒泡排序
一、数组的冒泡排序
#include #include #define MAX_LENGTH 20000int main(int argc, char const *argv[]){ // int a[9] = {3,6,7,4,5,2,1,9,8}; // 1 2 3 4 5 6 7 8 9// 原理: // 比较前后两个数 如果后一个比前一个小 交换 反之无需处理 // 下标后移,继续处理下两个数 // 3 6 7 4 5 2 1 9 8 // 3 6 4 5 2 1 7 8 9 int a[MAX_LENGTH]; for (int i = 0; i < MAX_LENGTH; i++) { a[i] = i; } // 如果一次排序从来没有交换过(即 flag == 0 时),代表其本身已经是有序队列了(即排序完成) for (int j = 0; j < MAX_LENGTH; j++) { int flag = 0; for (int i = 0; i < MAX_LENGTH - j; i++) { if (a[i] > a[i+1]) { flag = 1; int temp = a[i]; a[i] = a[i+1]; a[i+1] = temp; } } if (flag == 0) { break; } } // 输出结果 for (int i = 0; i < MAX_LENGTH; i++) { printf("%d ", a[i]); } printf("n"); return 0;}