您的位置:首页 > 其它

排序算法——冒泡排序(Bubble Sort)

2014-08-30 17:49 344 查看
冒泡排序(Bubble Sort)

C/C++代码:

#include <iostream>
#include <stdlib.h>

using namespace std;

void Print( int r[], int n )
{
for( int i = 0; i < n; i++ )
{
cout << r[i] << "  ";
}
cout << endl;
}

void Swap( int& a, int & b )
{
int temp = a;
a = b;
b = temp;
}

void BubbleSort( int r[], int n )
{
for( int i = n-1; i > 0; i-- )
{
for( int j = 0; j < i; j++ )
{
if( r[j] > r[j+1] )
Swap( r[j], r[j+1] );
}
}
}

int main()
{
int r[] = { 34, 12, 45, 78, 52, 18, 67, 90, 64, 72, 27 };
int n = sizeof( r ) / sizeof( int );
Print( r, n );
BubbleSort( r, n );
Print( r, n );

system( "PAUSE" );

return 0;
}


可以在BubbleSort中,添加一个标记,用来记录每趟中是否有数据进行交换。如果在某一趟中没有进行数据交换,则表明已经排序完成,从而可以使冒泡排序提前结束。
代码如下:

C/C++代码

void BubbleSortPro( int r[], int n )
{
bool flag = true;
for( int i = n-1; i > 0 && flag; i-- )
{
flag = false;
for( int j = 0; j < i; j++ )
{
if( r[j] > r[j+1] )
{
Swap( r[j], r[j+1] );
flag = true;
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: