实在是想感叹一下,因为一个很简单的东西,自己在网上找了半天反而弄的很复杂,逻辑性太强,小白实在是看不懂。因此,下面是一个最小白的冒泡排序的实现方式。
时间复杂度o(n*n)。
逻辑分析:
依次比较数组中的两个元素,较小的放在前面,较大的放在后面。
重复上面步骤,对,一直重复第一个步骤直到排序完成为止。
实例分析:
输入数组:
9 8 7 6 5 4 3 2 1 0
第一次循环
8 7 6 5 4 3 2 1 0 9
分析一下,怎么久到这儿来的,首先比较9和8,9后移,数组变成8 9 7 6 5 4 3 2 1 0,继续比较9和7,然后9又后移,移呀移,就到最后啦。
第二次循环
7 6 5 4 3 2 1 0 8 9
第三次循环
6 5 4 3 2 1 0 7 8 9
第四次循环
5 4 3 2 1 0 6 7 8 9
第五次循环
4 3 2 1 0 5 6 7 8 9
第六次循环
3 2 1 0 4 5 6 7 8 9
第七次循环
2 1 0 3 4 5 6 7 8 9
第八次循环
1 0 2 3 4 5 6 7 8 9
第九次循环
0 1 2 3 4 5 6 7 8 9
第十次循环
0 1 2 3 4 5 6 7 8 9
#include<iostream>
#include<cstdlib>using namespace std;void swap(int &a, int &b)
{int temp = a;a = b;b = temp;
}void bubbleSort(int a[], int length)
{for (int j = 0; j < length - 1; j++){for (int i = 0; i<length - 1; i++){if (a[i] > a[i + 1]){swap(a[i], a[i + 1]);}}for (int i = 0; i < 10; i++){cout << a[i] << " ";}cout << endl;}}int main()
{int a[] = { 9,8,7,6,5,4,3,2,1,0 };bubbleSort(a, 10);for (int i = 0; i < 10; i++){cout << a[i] << " ";}cout << endl;system("pause");return 0;}