冒泡排序法
宗旨:技术的学习是有限的,分享的精神是无限的。
1、排序的意义
排序是将一群数据,依指定顺序所进行的排列过程。常见的“从大到小”与“从小到大”
2、排序的特性——稳定性与不稳定性
稳定性排序过后能使值相同的数据,保持原顺序中的相对位置。
3、排序的分类
(1)内部排序:将待处理的数据存放到内部存储器中做排序,数据可被随机存取。
(a)交换式排序法:冒泡排序法,快速排序法
(b)选择式排序法:选择排序法,雷堆排序法
(c)插入式排序法:插入排序法,谢耳排序法,二叉树排序法
(2)外部排序:待处理的数据量过于庞大;
(a)合并排序法
(b)直接合并排序法
4、冒泡排序法
方法:将相邻的两个数进行比较,若左边的值大于右边的值,则将此两个值互相交换;右边的值继续和下一个值做比较,重复此动作直到最后一个值。此方法在每次比较就会以交换位置的方式将本轮最大者移向数组的尾端。
空间复杂度:1;平均时间复杂度:n2
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[i];
a[i] = temp;
}
}
}
}
注:冒泡排序毕竟是一种效率低下的排序方法,在数据规模很小时,可以采用。数据规模比较大时,最好用其它排序方法。