冒泡排序
2013-12-07 22:17
253 查看
//数据结构中的冒泡排序就是将相邻元素进行比较然后进行相应的交换。。。
// 交换的时候,每次把最小的元素放在最前面,所以要从后往前交换
// 如果要将最小的元素放在后面,则要从前往后交换,
#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; //如果有交换发生则仍需执行比较
}
}
}
}
// 交换的时候,每次把最小的元素放在最前面,所以要从后往前交换
// 如果要将最小的元素放在后面,则要从前往后交换,
一、基本算法
#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; //如果有交换发生则仍需执行比较
}
}
}
}
相关文章推荐
- c# 冒泡排序,折半查找。二维数组
- 数组的常见操作:冒泡排序 选择排序与取最值
- 白话经典算法系列之中的一个 冒泡排序的三种实现
- <C语言>实现输入几个数,先倒叙排列,再用“冒泡排序”方法从小到大排列
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 交换排序之冒泡排序和快速排序
- 冒泡排序和快速排序
- 冒泡排序
- 冒泡排序与简单选择排序——Java实现
- 冒泡排序--java
- 冒泡排序
- 七大内部排序算法总结(插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、归并排序、堆排序)
- 冒泡排序
- 冒泡排序
- 1算法(含冒泡排序的优化及打乱顺序)
- 冒泡排序
- *冒泡排序及其算法优化分析
- 冒泡排序
- 冒泡排序
- 数组冒泡排序