冒泡排序
思路
每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
(升序)每次取两位比较,越大越靠后,每一趟将最大数归位,执行n-1趟。
代码
#include <stdio.h>
#define LEN 9
int main()
{
int i, j, temp;
int a[LEN] = {2, 4, 5, 6, 3, 4, 2, 9, 10};
for (i = 0; i < LEN-1; i++) {
for (j = 0; j < LEN-i; j++) {
if (a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i = 0; i < LEN; ++i) {
printf("%d ", a[i]);
}
return 0;
}
时间复杂度
外层循环n-1次,内层循环n-i次,内层循环次数用等差数列求和(1+(n-1))*(n-1)/2 -> O(N^2)