冒泡排序
原理:两两相邻的数比较,如果前者大于后者就交互,否则不交换
时间复杂度:最坏O(n^2) ,平均为 O(n^2)
空间复杂度:O(1)
var a = new[] { 10, 23, 14, 24, 57, 3, 7, 19, 87, 11 };
int i, j, temp;
for (i = a.Length -1; i > 1; i--)
{
for (j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
/* 优化版本 */
var a = new[] { 10, 23, 14, 24, 57, 3, 7, 19, 87, 11 };
int i, j, temp;
bool swap = false;
for (i = a.Length -1; i > 1; i--)
{
swap = false;
for (j = 0; j < i; j++)
{
if (a[j] > a[j + 1])
{
swap = true;
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
if(!swap) break;// 无交互可以结束排序
}
l = [10,23,14,24,57,3,7,19,87,11]
for i in range(len(l),0,-1):
for j in range(len(l)-1):
if l[j] > l[j+1]:
l[j],l[j+1] = l[j+1],l[j]
print(l)
冒泡排序与选择排序的对比
冒泡排序是每一轮相邻两两比较,而选择排序是指定索引元素与后面的比较