读书人

小疑点各位看看万能的csdn

发布时间: 2012-03-27 13:44:24 作者: rapoo

小问题,各位看看,万能的csdn
#include "stdio.h"
void main()
{
int a[5]={1,3,2,5,4};
int i,j,k,mind;
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<5;j++)
if(a[i]>a[j])
k=j;
mind=a[i];
a[i]=a[k];
a[k]=mind;
}
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");
}
请问在主循环里的k=i;有什么意义,因为接下来又有一个k=j;但是当我删掉k=i;时程序直接崩溃!求解答。这就是一个冒泡排序啊。不解?

[解决办法]
K确实没用,写了下,排序正常
void main()
{
int a[5]={1,3,2,5,4};
int i,j,k,mind;
for(i=0;i<4;i++)
{
//k=i;
for(j=i+1;j<5;j++)
{
if(a[i]>a[j]) {
//k=j;
mind=a[i];
a[i]=a[j];
a[j]=mind;
}
}

}
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");


}
[解决办法]
j循环里是求[i~5]里最小值的下标记为k 然后交换i 和 k
冒泡排序不就这么干的么
[解决办法]
亲,k没有初值,如果,到了边界,就是k的值没有变化时,就是a【i】>a【j】总成立,没有改变k的值,
你去掉了k=i;

那么,k的值 随机值,你进行交换,肯定会非法访问内存的
[解决办法]

C/C++ code
#include "stdio.h"void main(){  int a[5]={1,3,2,5,4};  int i,j,k,mind; 此时 k的值是随机的,因为它不是全局变量 且未初始化 假设为 k= 22222222  for(i=0;i<4;i++)  {  //k=i;                        假设去掉  for(j=i+1;j<5;j++)  if(a[i]>a[j])  如果[color=#FF0000]a【i】< a【j】[/color]总成立 k的值不会改变,仍是假设的值,那下面,你懂的的 k=222222  k=j;              [color=#FF0000]//上面说错了 sorry[/color]  mind=a[i];  a[i]=a[k];  a[k]=mind;  }  for(i=0;i<5;i++)  printf("%d\t",a[i]);  printf("\n");}
[解决办法]
#include "stdio.h"
void main()
{
int a[5]={1,3,2,5,4};
int i,j,k,mind; 此时 k的值是随机的,因为它不是全局变量 且未初始化 假设为 k= 22222222
for(i=0;i<4;i++)
{
//k=i; 假设去掉
for(j=i+1;j<5;j++)
if(a[i]>a[j]) 如果a【i】< a【j】总成立 k的值不会改变,仍是假设的值,那下面,你懂的的 k=222222
k=j; //上面说错了 sorry
mind=a[i];
a[i]=a[k];
a[k]=mind;
}
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");
}
[解决办法]
在MyEclipse中把k=i注释掉和不是注释掉都是4,5,2,3,1,我想问的是if语句加{}和不加具体区别在哪里?请楼主明示
[解决办法]
5楼正解,另外这是选择排序,不是冒泡排序,每比较一轮,都把剩下的元素中最小的数放到前面。
k=i;去掉会导致k没有赋初值,就是一个随机值了,又恰好这时第一个数1为最小的,在后面的交换值里面a[k]
会越界。
[解决办法]
[code=C/C++][/code]#include "stdio.h"
int main()
{
int a[5]={1,3,2,5,4};
int i,j,mind,k;

for(i=0;i<4;i++)
{
/* k=i;*/
for(j=i+1;j<5;j++)
if(a[i]>a[j])
{k=j;
mind=a[i];
a[i]=a[k];
a[k]=mind;
}
}
for(i=0;i<5;i++)
printf("%d\t",a[i]);
printf("\n");
getchar();
return 0;
}
[解决办法]
我是看了贴的名称进来的,其实 C S D N并不是万能的,关键还会是在于自己多加思考,多调试观察程序运行的步骤。

读书人网 >C++

热点推荐