#include <iostream>
using namespace std;
void bubblesort(int *p,int len)
{
int i = 0;
int j = 0;
int k = len-1;
int m = 0;
int flag;
/*用k来保存新的判断条件*/
for(i = 0;i<k;i++)
{
/*flag初始化为0*/
flag = 0;
m = 0;
/*每排序一趟,则至少有一个元素已经有序,
用 j<len-i-1 可以缩小排序范围 */
for(j = 0;j<k-i;j++)
{
/*当前面的元素大于后面的元素时,交换位置*/
if(p[j]>p[j+1])
{
int tmp = p[j];
p[j] = p[j+1];
p[j+1] = tmp;
/*若程序进入if语句,则必然会发生交换,
当发生交换时把flag置成 1 */
flag = 1;
/*记住最后一次交换的位置*/
m = j;
}
}
/*判断,如果flag=0,说明上一趟排序没有发生交换,
数列已经有序,break*/
if(flag == 0)
{
break;
}
/*将新的长度赋值给k*/
k = m;
}
}
int main()
{
int num[10]={1,2,7,4,6,3,5,8,9};
int i=0;
bubblesort(num,9);
for(int i = 0;i<9;i++)
cout<<num[i]<<",";
cout<<endl;
return 0;
}
冒泡排序 bubblesort
最新推荐文章于 2024-04-21 22:59:56 发布