原理
相邻两个数之间比较,将大的数放在后面,每一轮都可以选出最大的放在后面,多次重复操作即可使数组有序。
动画演示
单次算法:
for(int j=1;j<len-i;j++)
{
if(nums[j-1]>nums[j])
{
swap(&nums[j-1],&nums[j]);
}
}
整体代码:
void swap(int* a,int* b)
{
int tem=*a;
*a=*b;
*b=tem;
}
void BubbleSort(int* nums,int len)
{
for(int i=0;i<len;i++)
{
bool flag=true; //优化代码
for(int j=1;j<len-i;j++)
{
if(nums[j-1]>nums[j])
{
swap(&nums[j-1],&nums[j]);
flag=false;
}
}
if(flag) return ; //若一轮排序结束无元素交换位置,则全部有序
}
}
相关题目:
2.合并两个有序数组
3.元素计数