冒泡排序是最常用的一种排序class="superseo">算法,具有明显的规则性。
定义:
i —— 外循环次数;
j —— 内循环次数;
算法流程:
(1)数据交换:比较相邻的两个元素( 即第 j 和 j+1个元素 ),如果第 j 个元素比第 j +1个元素大,则交换它们;
(2)内循环:对第 i 轮时的每一对相邻的两个元素重复步骤(1),经过一轮比较得到一个最大值,此最大值将位于本轮次( 第 i 轮)的最后一位。
(3)外循环:重复步骤(1)和步骤(2),每重复一次外循环的次数均减去1,直至排序完成。
示例:
int arr[] = {13,22,45,74,25,18,15,33,19};//创建一个一维数组
// 冒泡排序
// 外部循环次数 = 元素个数 - 1 (这是规律,记住即可,读者也可自行推导)
for (int i = 0; i < sizeof(arr)/sizeof(arr[0]) - 1; i++) {
// 内循环次数 = 元素个数 - 当前轮数 - 1(这是规律,记住即可,读者也可自行推导)
for (int j = 0; j < sizeof(arr) / sizeof(arr[0]) - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// 三行的交换代码
int temp = arr[j]; // 创建临时变量temp,用于保存元素arr[j]
arr[j] = arr[j + 1]; // 使得arr[j] = arr[j + 1]
arr[j + 1] = temp; // 使得arr[j + 1] = temp,完成交换
}
}
}
cout << "排序后的结果为:"<< endl;
for (int k = 0; k < sizeof(arr)/sizeof(arr[0]); k++) {
cout << arr[k] << " ";
}
cout << endl;
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)