冒泡排序(Bubble Sort)
- 将序列中的第1个元素与第2个元素进行比较,若前者大于后者,则将第1个元素与第2个元素进行位置交换,否则不交换。
- 再将第2个元素与第3个元素进行比较,若前者大于后者,则将第2个元素与第3个元素进行位置交换,否则不交换。
- 依次类推,直到将第n-1个元素与第n个元素进行比较为止。
这个过程称为第1趟冒泡排序。经过第1趟冒泡排序后,将长度为n的序列中最大的元素置于了序列的尾部,即第n个位置上。
然后再对剩下的n-1个元素作同样的操作,称之为第2趟冒泡排序。经过了第2趟的冒泡排序,将剩下的n-1个元素中最大的元素置于了序列n-1的位置上。
如此进行下去,当执行完第n-1趟的冒泡排序后,就可以将序列中剩下2个元素中的最大的元素置于序列第2个位置上,第1个位置上的元素就是该序列中最小的元素。
一个包含n个元素的序列要进行n-1趟冒泡排序,第i趟冒泡排序将第1~n-i+1个元素中最大的元素交换到第n-i+1个位置上
void BubbleSort(int *a, int len)
{
int i, j;
for (i = 0; i < len - 1; i++) //将最大元素沉底的次数为len-1
{
for (j = 0; j < len - i - 1; j++) //将当前数组最大元素沉底,数组长度缩短
{
if (a[j] > a[j + 1])
mySwap(a, j, j + 1);
myPrint(a, len);
}
myPrint(a, len);
printf("******