有学习了冒泡算法的么?能帮忙解惑么?谢谢了!
冒泡算法,本人的代码如下:还请老司机能帮忙解答下困惑。 程序没法运行。因为是自学,所以很多东西都不懂。还请老司机解答下!谢谢了!///练习1.1 冒泡算法,假设有一个10元素的数组,即n=10.求其中最大值得元素。//
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i=0, j=0, n=10, t=0;
int a[10];
printf("请用户输入一组10个数:\n");
for(i = 1; i <= n; i++)
scanf("%d ", &a[i]);
for(i = 1; i < n-1; i++ ) //一个数排序要,比较1轮,n个数,要比较n-1轮,才能按照冒泡递减顺序排列!//
{
for(j = 1; j < n-j; j++) //逻辑地址上的,第J个做比较的数,要与n-j个数做比较,并以数值递减的顺序排列!// 这网上是n-i,可我觉得n-j,可以么?
if(a[j] < a[j+1]) //分别与两边的数做比较//
{
t = a[j]; //将原a[j]中的值存储在t中,故地址a[j]中的内存为空。//
a[j] = a[j+1]; //交换a[j+1]的值,存储到地址a[j]中。 将a[j+1]中的值赋值到地址aj(此时地址a[j]内存为空)中,故此时地址aj的值为原地址a[j+1]的值()较大的值。故此时地址aj+1]中的内存为空//
a[j+1] = t; //交换a[j]的值,存储到地址a[j+1]中。将t中的值(原来地址a[j]的值赋值给地址aj+1,此时a[j+1]的值为原地址aj的值!)//
}
}
for(j = 1; j <= n; j++) //打印输出按照冒泡递减顺序排列的数组// 这网上用的是变量i,可我用变量j,可以么?
printf("%d",a[j]);
getchar();
system("pause");
return 0;
}