基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。每一趟排序后的效果都是讲没有沉下去的元素给沉下去。
算法流程:
1)比较相邻的两个元素,如果前面的数据大于后面的数据,就将两个数据进行交换;这样对数组第0个元素到第n-1个元素进行一次遍历后,最大的一个元素就沉到数组的第n-1个位置;
2)重复第2)操作,直到i=n-1。
时间复杂度分析:O(n^2),冒泡排序是一种不稳定的排序算法。
void BubbleSort(int a[], int n) { int i, j; for (i=0; i<n; i++) //j的起始位置为1,终止位置为n-i for (j=1; j<n-i; j++) if (a[j]<a[j-1]) { int temp = a[j-1]; a[j-1] = a[j]; a[j] = temp; } }