以待排序序列 { 2, 5, 3, 4, 1} 為例,按非遞減有序排列。
第壹趟起泡排序過程如下:
初始:?25341第1次:?25341
第2次:?23541?3比最終位置前移了壹個位置
第3次:?23451?4比最終位置前移了壹個位置
第4次:?23415
通過第壹趟的排序過程發現,3、4原來在索引為2、3的位置,但經過第壹趟排序過程後,3、4暫時移動到了索引為1、2的位置。
C++程序如下:
#include?"iostream"#include?"iomanip"
using?namespace?std;
//輸出數組中的所有元素
void?display(int?arr[],?int?n)
{
int?i;
for(i=0;?i<n;?i++)
{
cout<<setw(4)<<arr[i];
}
cout<<endl;
}
//起泡排序
void?bubbleSort(int?arr[],?int?n)
{
int?i,?j;
int?temp;
for(i=0;?i<n-1;?i++)
{
for(j=0;?j<n-1-i;?j++)
{
if(arr[j]?>?arr[j+1])
{
temp?=?arr[j];
arr[j]?=?arr[j+1];
arr[j+1]?=?temp;
}
}
cout<<"第"<<i+1<<"趟:"<<endl;
display(arr,?n);
}
}
int?main()
{
int?arr[]?=?{2,?5,?3,?4,?1};
int?n?=?5;
cout<<"初始狀態:"<<endl;
display(arr,?n);
bubbleSort(arr,?n);
return?0;
}
運行測試:
初始狀態:25341
第1趟:
23415
第2趟:
23145
第3趟:
21345
第4趟:
12345