1、算法流程:
(1)循环比较两个相邻的元素,如果第一个比第二个大,那么交换
(2)经过第一轮迭代后,最后一个元素是最大值;然后继续第二轮迭代,除了最后一个之外
(3)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
2、代码实现:
void bubble_sort(int*data,int length)
{
bool flag= true;
int count=0;
while(flag)//直到发现本次排序,没有发生交换的时候,终止
{
flag=false;
for(int j=0;j<length-count-1;j++)//逐步交换相邻位置
{
if(data[j]>data[j+1])
swap(data[j],data[j+1]);
flag=true;
}
count++;
}
}
int main() {
int data[10]={13,5,1,6,7,8,4,2,2,10};
//quite_sort(data,0,13);
bubble_sort(data,10);
for(int i=0;i<10;i++)
{
std::cout<<data[i]<<std::endl;
}
return 0;
}