冒泡排序
简易代码描述:
常见方式1:
数组横向,从左至右,从小到大
void bubble_sort(int a[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
// 交换元素
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
}
方式二:
数组竖向,从下到上,从大到小
void bubble_sort(int a[],int n)
{
int i,j,x;
for(j=0;j<n-1;j++)
{
for(i=n-2;i>=j;i--)
{
if(a[i]>a[i+1])
{
x=a[i];
a[i]=a[i+1];
a[i+1]=x;
}
}
}
}
时间复杂度:
- 最坏情况下,冒泡排序的时间复杂度为 (O(n^2))。
- 最好的情况下(数组已经有序),时间复杂度为 (O(n)),这是通过优化检查交换来实现的。