当前位置: 代码迷 >> C语言 >> C语言 选择法这样写核心程序行不?
  详细解决方案

C语言 选择法这样写核心程序行不?

热度:254   发布时间:2007-02-15 19:32:15.0
C语言 选择法这样写核心程序行不?

10个数 按从小到大排列
核心程序:int i,j,t,a[10]
  for(i=0;i<9;i++)
{for (j=1;j<10-i;j++)
if (a[i]>a[i+1])
t=a[i];a[i]=a[i+1]);a[i+1]=t;
}
对不?
和int i,j,a[10],t;
for(i=0;i<9;i++)
{k=1;
for (j=i+1;j<10;j++)
if (a[j]<a[k]) k=j;
t=a[k];a[k]=a[i]);a[i]=t;
}
一样吗?

搜索更多相关的解决方案: 核心程序  C语言  int  选择  排列  

----------------解决方案--------------------------------------------------------
打漏了 第5行是if (a[i]>a[i+1]) j=j+i;


----------------解决方案--------------------------------------------------------

int i,j,t,a[10]
  for(i=0;i<9;i++)
{for (j=1;j<10-i;j++)
if (a[i]>a[i+1])j=j+i;
t=a[i];a[i]=a[i+1];a[i+1]=t;
}
不对,不一样
----------------解决方案--------------------------------------------------------
for(i=0;i<9;i++)
{for (j=1;j<9-i;j++)//因该是9-i,如果i=0;j 就可以=9,j+1就要超出了
if (a[j]>a[j+1])
t=a[j];a[j]=a[j+1]);a[j+1]=t;//这里应该是j否则有可能就死循环了
}
希望我说的对

----------------解决方案--------------------------------------------------------
我感觉好象是一样的
第二个中的k是多余的
int i,j,a[10],t;
for(i=0;i<9;i++)
{
for (j=i+1;j<10;j++)
if (a[j]<a[j]){
t=a[j];a[j]=a[i]);a[i]=t;}
}
这样应该和你是一样的
----------------解决方案--------------------------------------------------------

看错了
第一个是冒泡泡;第二个应该是选泡泡{选择法},但是第二个按照你那样子的话i循环一次k=1;后面好象都是和a[1]比较
int i,j,a[10],t;
for(i=0;i<9;i++)
{
for (j=i+1;j<10;j++)
if (a[j]<a[i]){//找出最小的
t=a[j];a[j]=a[i]);a[i]=t;}
}


----------------解决方案--------------------------------------------------------
  相关解决方案