版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sun_ashe/article/details/84844701
冒泡排序算法就是每一次把最小的数放到第一个位置,然后把剩下的数中的最小的位置放在第二个位置,依次类推,代码如下.
其中bubbleSort_v2最为v1的一个改进版本,可以解决本身已经顺序的情况下的,无需进行多次比较的问题,但是整体的算法时间复杂度并没有很好的提升。
template <class T>
void bubbleSort_v1(T data[],int n)
{
for(int i=0;i<n-1;i++)
{
for(int j = n-1;j>i;--j)
{
if(data[j] < data[j-1])
{
swap(data[j],data[j-1]);
}
}
}
}
template<class T>
void bubbleSort_v2(T data[],int n)
{
bool again =true;
for(int i=0;i<n-1 && again;i++)
{
for(int j =n-1,again = false;j>i;--j)
{
if(data[j] < data[j-1])
{
swap(data[j],data[j-1]);
again = true;
}
}
}
}
int main()
{
int num=10;
int data[10] = {9,8,7,6,5,4,3,2,1,0};
//char data[10] = {'a','b','c','d','h','l','c','d','e','k'};
for(int i=0;i<num;i++)
{
cout << data[i] << ",";
}
cout << endl;
//insertionSort(data,num);
//selectionSort_v3(data,num);
bubbleSort_v2(data,num);
for(int i=0;i<num;i++)
{
cout << data[i] << ",";
}
cout << endl;
return 0;
}