赞
踩
遍历数组,从前往后进行比较,每次都将最大的数字交换至最后,并减少比较长度。
void BubbleSort(int* arr, int len)//冒泡排序,时间复杂度O(n^2),空间复杂度O(1) { int tmp; for (int i = 0; i < len-1; i++)//从第一个数字开始排序,将最大的数字放在最后面 { //for (int j = 0; j + 1 < len - i; j++) for (int j = 0; j < len - 1 - i; j++)//从第一个数字开始至已完成排序的数字之前的所有数字j与j+1进行比较,将较大的数字置于后面 { if (arr[j] >= arr[j+1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } }
void BubbleSort1(int* arr, int len)//冒泡排序,针对数组本身有序 { int tmp; bool flg;//记录是否发生交换 for (int i = 0; i < len - 1; i++) { flg = false;//每次循环都将flg置为false for (int j = 0; j < len - i - 1; j++) { if (arr[j] >= arr[j + 1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flg = true; } } if (!flg)//如果没有发生交换,直接退出 { return; } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。