菜鸟一枚,
刚刚学习数据结构与算法,
为了加深理解,
所以与同学们分享学习过程。
今天学习的是,
冒泡排序!!!
冒泡排序:两两相邻进行比较,若返序,则交换,直到没有反序
那么让代码说话:
#include <stdio.h>
#include <stdlib.h>
//ctrl+shift+c 注释多行
//ctrl+shift+x 取消注释
void bubosort(int k[],int n) //冒泡排序,从小到大
{
int i,j,temp,flag;
flag=1;
// for(i=0;i<n-1;i++) //假冒泡
// {
// for(j=i+1;j<n;j++) //但这个排序方法不符合两两相邻比较
// {
// if(k[i]>k[j]) //若前一个大于后一个,交换顺序
// {
// temp=k[j];
// k[j]=k[i];
// k[i]=temp;
// }
// }
for(i=0;i<n-1&&flag;i++) //没有执行到移位操作,此循环提早退出
{
for(j=n-1;j>i;j--) //
{
flag=0; //没有执行到移位操作,
if(k[j-1]>k[j]) //相邻比较,交换顺序
{
temp=k[j-1];
k[j-1]=k[j];
k[j]=temp;
flag=1;
}
}
}
}
int main()
{
int i,a[10]={4,3,6,1,0,8,7,2,9,5};
bubosort(a,10);
printf("排序后结果为:");
for(i=0;i<10;i++)
{
printf("%d",a[i]);
}
return 0;
}
若有错误的地方,请同学们指出。
谢谢同学们的阅读!!!