#include <stdio.h>
void Sort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int swapped = 0; // 标记是否发生交换,发生交换则变为1
for (int j = 0; j < n - 1 - i; 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;
}
}
// 打印输出
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("原始数组: ");
printArray(arr, n);
Sort(arr, n);
printf("排序后数组: ");
printArray(arr, n);
return 0;
}
运行结果:

时间复杂度:
最好的情况下是原始数组已经排好顺序:O(n)
最坏的情况下是原始数组逆序:O(n²)
平均时间复杂度:O(n²)
空间复杂度:O(1)
864

被折叠的 条评论
为什么被折叠?



