C语言,数组排序,求解。。

[复制链接]
查看11 | 回复1 | 2011-3-6 12:05:32 | 显示全部楼层 |阅读模式
#include stdio.h
main()
{

int a[3];

int i,j,t;

printf(\"input 3 number:\\n\");

for(i=1;i=3;i)

scanf(\"%d\",

printf(\"\\n\");

for(j=1;j=3;j)

for(i=1;i=4-j;i)

if(aa[i 1])

{

t=a;

a=a[i 1];

a[i 1]=t;

}

printf(\"sorted num:\");

for(i=1;i=3;i)

printf(\"%d,\",a);

getchar();

getchar();
}
-----------------------------------------------------------
a[3] 不是只有a[0]a[1]a[2]么 ,那下面的循环不是会出现a[3] ,[4].... 这算越界么,不懂求解。。还有没有其他的循环方式进行排序。??
for(j=1;j=3;j)

for(i=1;i=4-j;i)

if(aa[i 1])
回复

使用道具 举报

千问 | 2011-3-6 12:05:32 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">num1)
list3[k]=list1;
while(jnum2)
list3[k]=list2[j];
num3=k-1;

由于在前面的一段程序完成后,可能会出现这样的情况:一个原数组中的元素已经取完,但是另一个原数组的元素还没有取完。

后面的这段程序就是用于处理这种情况,
假如是第一个数组中的元素没有取完,那么i一定小于num1,那么此时就用
while(inum1)
list3[k]=list1;
将第一个数组中的元素全部附加到新的数组中,由于这些元素都已经排序,所以这样做不会导致顺序被打乱。

如果是第二个数组中的元素没有取完,那么j一定小于num2,那么此时就用
while(jnum2)
list3[k]=list2[j];
将第二个数组中的剩余元素全部附加到新的数组中。

这些过程全部结束后,k-1就是新数组的长度,所以将k-1赋予num3存储list3数组的元素个数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行