巩固自己学习,方便新手,把自己学习的写出来,有错误的敬请指出。
冒泡排序法我理解的三点:
外循环:循环变量i,可以理解为对i位置排序。
内循环:针对i位置,通过内循环,把大的数放在i位置。
变量change: 如果内循环不把change置为1说明排序已经结束。
具体代码如下(有注释):
#include <stdio.h>
int main(){
int bubblesort(int* a,int n);
int i;
int a[]={7,5,1,6,3};
printf("a[]: ");
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
bubblesort(a,5);
printf("\nafter sort\n a[]: ");
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
return 1;
}
int bubblesort(int* a,int n)
{
int i,j;
int change;
int temp;
change=1;
for(i=n-1;i>0&&change;i--) //i表示正在对索引为i的位置进行排序 ,下面的循环结束后i位置就排好了。
{
change=0; //下面的内循环结束后,还没把此变量置为1的话,说明所有顺序已经排好了,可以停止外循环 。
for(j=0;j<i;j++) //内循环,针对外循环的i位置,通过冒泡把合适的数放在i位置。
{
if(a[j]>a[j+1])
{
change=1;
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
return 1;
}