基本思想:
(1)先将具有n个数的待排序列进行最多n-1次的顺序俩俩比较,将序列最大值放入最后的位置n-1。
(2)继续对前n-1个数进行俩俩比较,将次大的数放在n-2的位置。
(3)依次进行,直至排序完成。
方法一:
方法二:
虽然方法不同,但是内在框架是相同的。
参考博客地址:http://blog.csdn.net/morewindows/article/details/6684558
(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