#include<stdio.h>
void sort(int *p,int n);
int main()
{
int a[6]={12,2,5,7,-1,0};
int i;
for(i=0;i<6;i++)
printf("%d ",a[i]);//输出原排序
puts("\n");
sort(a,6);//调用函数
for(i=0;i<6;i++)
printf("%d ",a[i]);//输出调用函数后的结果
puts("\n");
return 0;
}
void sort(int *p,int n)//进行冒泡排序的函数
{
int i,j;
for(i=0;i<n-1;i++)//关于i<n-1:控制对比的次数,例:5个元素进行4次对比排序
{ //关于i=0:控制j的最大取值,例:i=0时,n=6,j(max)=4,数组中的每个元素都参与比较
for(j=0;j<n-i-1;j++)//排序第一次后,a[5]的值确定不需参与下一次排序,第二次排序参与元素数量减掉一个
{ //依此类推,故减去i,减1是因为设置了[j+1],当j=5时,a[j+1]为a[6],故控制j的最大取值为4
int tem;
if(p[j]>p[j+1])//若满足条件,值互换
{
tem=p[j];
p[j]=p[j+1];
p[j+1]=tem;
}
}
}
}
冒泡排序的解释
最新推荐文章于 2023-06-02 13:27:15 发布