网站建设维护协议,正规重庆妇科医院,小程序制作报价,网站建设好了怎么在百度可以搜到冒泡排序虽然简单#xff0c;但在实际应用中效率较低#xff0c;适合小规模数据或教学演示。 // 冒泡排序函数
void bubbleSort(int arr[], int n) {for (int i 0; i n - 1; i) { // 外层循环控制排序轮数for (int j 0; j n - i - 1; j) { // 内层循环控制每轮比… 冒泡排序虽然简单但在实际应用中效率较低适合小规模数据或教学演示。 // 冒泡排序函数
void bubbleSort(int arr[], int n) {for (int i 0; i n - 1; i) { // 外层循环控制排序轮数for (int j 0; j n - i - 1; j) { // 内层循环控制每轮比较if (arr[j] arr[j 1]) { // 如果前一个元素大于后一个元素交换它们int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}}
}
#include stdio.h
void printArray(int arr[], int n) {for (int i 0; i n; i) {printf(%d , arr[i]);}printf(\n);
}int main() {int arr[] {64, 34, 25, 12, 22, 11, 90}; // 待排序数组int n sizeof(arr) / sizeof(arr[0]); // 计算数组长度printf(排序前的数组: \n);printArray(arr, n);bubbleSort(arr, n); // 调用冒泡排序函数printf(排序后的数组: \n);printArray(arr, n);return 0;
}
优化建议
1提前终止如果某一轮没有发生交换说明数组已有序可以提前结束排序。
// 冒泡排序函数
void bubbleSortOptimized(int arr[], int n) {int swapped;for (int i 0; i n - 1; i) {// 外层循环控制排序轮数swapped 0;for (int j 0; j n - i - 1; j) {// 内层循环控制每轮比较if (arr[j] arr[j 1]) {// 如果前一个元素大于后一个元素交换它们int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;swapped 1;}}if (!swapped) break; // 如果没有交换提前结束}
}2)记录最后交换位置记录每轮最后一次交换的位置减少不必要的比较。