C++冒泡排序算法实例
冒泡排序
大学学习数据结构与算法最开始的时候,就讲了冒泡排序;可见这个排序算法是多么的经典。冒泡排序是一种非常简单的排序算法,它重复地走访过要排序的数列,每一次比较两个数,按照升序或降序的规则,对比较的两个数进行交换。比如现在我要对以下数据进行排序:
10380692
当使用冒泡排序进行升序排序时,排序的步骤是这样的:
31080692 //10和3进行对比,10>3,交换位置
38100692 //10再和8进行对比,10>8,交换位置
38010692 //10再和0进行对比,10>0,交换位置
……
38069210 //这个时候,10到达了最右边,是最大的数字,此时,我们在从头开始进行对比
38069210 //3小于8,所以不用交换位置
30869210 //8大于0,所以交换位置
……
02368910
很简单,就是让大数沉入下面,小数慢慢上浮起来。冒泡排序的时间复杂度也为O(n^2)。
代码实现
#include<iostream>
usingnamespacestd;
 
voidBubbleSort(intarr[],intlength)
{
    inttemp;
    for(inti=0;i<length;++i)
    {
         for(intj=0;j<length-i-1;++j)
         {
              if(arr[j]>arr[j+1])
              {
                   temp=arr[j];
                   arr[j]=arr[j+1];
                   arr[j+1]=temp;
              }
         }
    }
}
 
intmain()
{
    intarr[10]={2,4,1,0,8,4,8,9,20,7};
 
    BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
 
    for(inti=0;i<sizeof(arr)/sizeof(arr[0]);++i)
    {
         cout<<arr[i]<<"";
    }
    cout<<endl;
 
    return0;
}