ps:虽然是转载的,但是代码是自己重新写过的。
基本思想:
在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
冒泡排序的示例:
算法的实现:
#include <iostream>
using namespace std;
void Print(int a[], int n)
{
for (int i = 0;i < n;i++)
{
cout << a[i] << " ";
}
cout << endl;
}
void Swap(int & p, int & q)
{
int tmp = p;
p = q;
q = tmp;
}
void BubbleSort(int a[], int n)
{
for (int i = 0;i < n - 1;i++)
{
for (int j = 0;j < n - i - 1;j++)
{
if (a[j] > a[j + 1])
{
Swap(a[j], a[j + 1]);
cout << i << "," << j << ":";
Print(a, n);
}
}
cout << i << "end with:";
Print(a, n);
}
cout << "result:" << endl;
Print(a, n);
}
int main()
{
int a[] = { 3,9,6,5,7,2,4,10,8,1 };
BubbleSort(a, 10);
system("pause");
}