冒泡算法1:
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(arr[i]>arr[j])
{
temp=arr[i]; arr[i]=arr[j]; arr[j]=temp;
}
}
}
冒泡算法2:
for(int i=0; i<n; i++)
{
for(int j=1; j<n-i; j++)
{
if(arr[j-1]>arr[j])
{
temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp;
}
}
}
改进型冒泡算法1:
BOOL flag=true; //设置标志,如果有一次遍历没有发生交换(flag==flase),说明排序已经完成
while(flag==true)
{
flag=flase;
for(int i=0; i<n-1; j++)
{
if(arr[i]>arr[i+1])
{
temp=arr[i] ;arr[i]=arr[i+1]; arr[i+1]=temp;
flag=true;
}
}
n--;
}
改进型冒泡算法2
int flag=n; //设置标志,记录每一次比较的最后位置,下次比较从开始到这个位置就终止
int tempNum=0;
while(flag>0)
{
tempNum=flag;
flag=0;
for(int i=0; i<tempNum; i++)
{
if(arr[j-1]>arr[j])
{
temp=arr[i]; arr[i]=arr[i-1]; arr[i-1]=temp;
flag=i;
}
}
}
网友评论