基本思想:
两两比较相邻的关键码,如果反序则交换(冒泡排序是一种稳定的算法),直到没有反序的记录为止。
解决方法:
两两比较的时候较大的记录数组的后方移动,经过一次冒泡后,数组中的所有元素都已经被比较了一遍。所以冒出的第一个泡一定是数组中最大的一个记录,同时用一个标志位exchange来记录最后发生交换的位置,作为下一次扫描时的终点。
#include <iostream>
using namespace std;
void bubbleSort(int r[])
{
int exchange = 6;
int bound;
while(exchange)
{
bound = exchange;
exchange = 0;
for(int j=1; j<bound; j++)
{
if(r[j] > r[j+1])
{
r[0] = r[j];
r[j] = r[j+1];
r[j+1] = r[0];
exchange = j;
}
}
}
}
int main()
{
int r[] = {0,15,28,32,25,18,16};
bubbleSort(r);
for(int i=1; i<=6; i++)
cout<<r[i]<<" ";
return 0;
}