冒泡排序(Bubble Sort)
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较
#include <stdio.h>
printf_arr(int a[],int length) {
for (int i = 0; i < length;i++) {
printf("%d ",a[i]);
}
printf("\n");
}
void bubble_sort(int a[],int length) {
int swaped ;
for (int i = 0; i < length - 1;i++) {//遍历趟数,之所以遍历length-1次,是因为当只有一个元素的时候,已经排序完成
swaped = 0;
for (int j = 0; j < length - i - 1; j++) {//每次排序完一次后,会把最后一个元素排序完成,所以要让length-1再减掉一个i
if (a[j]>a[j+1]) {
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
swaped = 1;
}
}
printf_arr(a, length);
if (swaped==0) {
break;
}
}
}
//时间复杂度:
//O(n):最好情况
//O(n^2):最坏情况
int main() {
int a[] = {9,5,4,6,1};
int length = 5;
bubble_sort(a,length);
}

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



