我们首先了解冒泡法,掌握其中的原理,冒泡法就是将数组中的第一个元素与其其他元素进行一次比较,如果你采用降序法,那么就是第一轮第一个数组元素比较完之后,最小值在第一个元素;接着再将数组的第二个元素与后面的元素进行比较,当第二轮比较完之后,在数组第二个元素与后面元素中的最小的那个元素会赋值给数组第二个元素;......依次如此,直到倒数第二个元素与最后一个元素进行比较。
接下来看代码:冒泡法对一维数组进行排序:
#include
#include
int main()
{
int array[10];
int i,j,k;
printf("请输入这个数组为:");
for(i=0;i<10;i++)
scanf("%d",&array[i]);
printf("\n");
for(i=0;i<9;i++)
for(j=i+1;j<10;j++) //最后一轮比较是倒数第一个元素与最后一个元素进行比较,所以当i等于倒数第二个元素时,j为倒数第一个元素,比较完之后不需要再进行比较。
所以i<9,j<10;
{
if(array[i]>array[j])
{
k=array[i];
array[i]=array[j];
array[j]=k;
}
}
printf("经过降序排序的数组为:");
for(i=0;i<10;i++)
printf("%d ",array[i]);
printf("\n");
system("pause");
return 0;
}
运行结果为:
这里,我们可以看到,与选择法不同的是,冒泡法只要满足了比较条件,就会将数组元素进行调换,而选择法是,选择法进行一轮,将索引元素进更换,比较完一轮找到最小/大元素的索引之后,再进行值的调换。
应该注意的内容在代码注释当中,这里不进行详细描述。
现在我们来了解打擂台算法,打擂台算法的原理是,默认一个值为最大元素,接着与各各元素进行比较,达到寻找最大值的目的
接下来看代码:打擂台法筛选出二维数组的最大值
#include
#include
int main()
{
int i,j;
int array[3][3]={{10,12,11},{14,16,18},{13,17,15}};
int max=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]>max)
max=array[i][j];
printf("请输出最大值为:%d\n",max);
system("pause");
return 0;
}
运行结果为:
当我们敲代码的过程中,我们会发现,其实指定第一个元素为最大元素的打擂台和冒泡法的原理相似,不过打擂台算法并不改变二维数组,只是通过比较将最大元素进行输出赋值给max。
对数组进行排序 *** 作还有选择法,选择法在我的上一期介绍当中,这期内容较简单,进行简单浏览即可
选择法在这:http://t.csdn.cn/HjisF
若觉得内容稍可,请留下你们的欢迎分享,转载请注明来源:内存溢出
评论列表(0条)