关于冒泡法算法,该怎么处理
关于冒泡法算法
#include<stdio.h>
#include<stdlib.h>
void bubblesort(int a[],int n)
{ int exchange;
int i,j,k;
for(i=0;i<n;i++)
{ exchange=0;
for(j=1;j<n-i;j++)
{ if(a[j-1]>a[j])
k=a[j];
a[j]=a[j-1];
a[j-1]=k;
exchange=1;
}
if(exchange!=1)
exit(0);
}
for(i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
}
int main()
{ int i,b[6]={1,23,12,34,22,14};
for(i=0;i<6;i++)
printf("%5d",b[i]);
bubblesort(b,6);
return 0;
}
输出结果如下图所示,为什么不能排序,求高手指导~
![关于冒泡法算法,该怎么处理 关于冒泡法算法,该怎么处理](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzA2LzE1LzEwMzg0NTk0LmpwZw==)
------解决方案--------------------
![关于冒泡法算法,该怎么处理 关于冒泡法算法,该怎么处理](/default/index/img?u=aHR0cDovL3d3dy5teWV4Y2VwdGlvbnMubmV0L2ltZy8yMDE0LzA2LzE1LzEwMzg0NTk1LmpwZw==)
------解决方案--------------------
#include<stdio.h>
#include<stdlib.h>
void bubblesort(int a[],int n)
{ int exchange;
int i,j,k;
for(i=0;i<n;i++)
{ exchange=0;
for(j=1;j<n-i;j++)
{ if(a[j-1]>a[j])
k=a[j];
a[j]=a[j-1];
a[j-1]=k;
exchange=1;
}
if(exchange!=1)
exit(0);
}
for(i=0;i<n;i++)
printf("%5d",a[i]);
printf("\n");
}
int main()
{ int i,b[6]={1,23,12,34,22,14};
for(i=0;i<6;i++)
printf("%5d",b[i]);
bubblesort(b,6);
return 0;
}
输出结果如下图所示,为什么不能排序,求高手指导~
------解决方案--------------------
------解决方案--------------------
void bubblesort(int a[], int n) {
int exchange;
int i,j,k;
for(i=0; i<n-1; i++) {
exchange = 0;
for(j=1; j<n-i; j++) {
if(a[j-1] > a[j]) {
k = a[j];
a[j] = a[j - 1];
a[j - 1] = k;
exchange = 1;
}
}
if(exchange != 1)
break;
}
for(i=0; i<n; i++)
printf("%5d", a[i]);
printf("\n");
}