您的位置:首页 > 其它

排序算法之冒泡排序

2015-08-31 22:30 155 查看
基本思想:

(1)先将具有n个数的待排序列进行最多n-1次的顺序俩俩比较,将序列最大值放入最后的位置n-1。

(2)继续对前n-1个数进行俩俩比较,将次大的数放在n-2的位置。

(3)依次进行,直至排序完成。

方法一:

template<class T>
void list<T>::Bubblesort()
{
for(int i = 0;i<currsize;++i)
for (int j = 1; j < currsize - i; ++j)
{
if (vec[j-1].data>vec[j].data)
{
int temp;
temp = vec[j - 1].data;
vec[j - 1].data = vec[j].data;
vec[j].data = temp;
}
}

}


方法二:

template<class T>
void list<T>::Bubblesort()
{
int i = 0;
int flag = 1; //发生交换的标志位,0表示未交换
while (i < currsize&&flag)
{
flag = 0;
for (int j =1; j <currsize-i;++j)  //完成一次冒泡排序
if (vec[j-1].data > vec[j].data)
{
int temp;
temp = vec[j - 1].data;
vec[j - 1].data = vec[j].data;
vec[j].data = temp;
}
flag = 1;
++i;
}

}


虽然方法不同,但是内在框架是相同的。

参考博客地址:http://blog.csdn.net/morewindows/article/details/6684558
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: