数据结构——冒泡排序及优化 冒泡排序思路每一趟都从开始位置从左向右遍历通过两两比较如果左边值大于右边值则交换换句话说每趟都可以将排序序列中最大值通过交换的方式蠕动到最后面此时第一趟就把最大的数据已经放到的最后所以此时最后一个数据就是有序的代码实现//冒泡排序 void Bubble_Sort(int arr[], int len) { for (int i 0;i len - 1;i) {//控制的是趟数 for (int j 0;j len - i - 1;j) {//控制的是这一趟中对于待排序序列的从左向右两两取值依次比较的过程 if (arr[j]arr[j1]) {//两两比较如果左边值大于右边值就交换 int temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; } } } }冒泡排序的优化标签bool tag在每一趟两两比较开始之前默认置为true在具体跑的过程中如果真的出现左边值右边值则需要交换并将tag赋为false一趟跑完之后发现tag还是true则说明数据已经为完全有序了。//冒泡排序的优化 void Bubble_Sort2(int arr[], int len) { for (int i 0;i len - 1;i) {//控制的是趟数 bool tag true; for (int j 0;j len - i - 1;j) {//控制的是这一趟中对于待排序序列的从左向右两两取值依次比较的过程 if (arr[j] arr[j 1]) {//两两比较如果左边值大于右边值就交换 int temp arr[j]; arr[j] arr[j 1]; arr[j 1] temp; tag false; } } if (tag)return; } }