您的位置:首页 > 理论基础 > 数据结构算法

冒泡排序

2013-12-07 22:17 253 查看
//数据结构中的冒泡排序就是将相邻元素进行比较然后进行相应的交换。。。

// 交换的时候,每次把最小的元素放在最前面,所以要从后往前交换

// 如果要将最小的元素放在后面,则要从前往后交换,

一、基本算法

#include <cstdio>

#include <cstdlib>

void BubbleSort (int data[ ],int length)

{

int temp;

for ( int i = 0; i < length ; ++i )

{

for( int ii =  length - 1; ii > i ; -- ii )
{

if ( data[ ii ] < data [ ii - 1 ] )

{

temp= data[ ii ];

data[ ii ] = data [ ii - 1 ];

data [ ii - 1 ] = temp;

}

}

}
}

int main()

{

int a [ ] = {1,2,9,8,4,5,7,6,3};

int len = 9;

BubbleSort(a,len);

for ( int i=0;i<len;++i)

{

printf(" %d\n",a[i]);

}

system("pause");

return 0;
}



二、优化后的算法

如果对于  2 ,1 ,3 ,4, 5;这样的序列,只需交换 前两个,但是经典的算法

在交换之后并没有立即停止,导致后续的比较还得继续进行,所以改进为:

void Sort(int data[ ],int length)

{

int temp;
bool FLAG = true;

for ( int i = 0; i < length && FLAG; ++i )

{

FLAG = false;//如果没有发生交换则不需要再循环了

for( int ii =  length - 1; ii > i ; -- ii )
{

if ( data[ ii ] < data [ ii - 1 ] )

{

temp= data[ ii ];

data[ ii ] = data [ ii - 1 ];

data [ ii - 1 ] = temp;
FLAG = true; //如果有交换发生则仍需执行比较

}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构