| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 584 人关注过本帖
标题:[讨论]关于数组排序的问题
只看楼主 加入收藏
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
 问题点数:0 回复次数:4 
[讨论]关于数组排序的问题
main()
{int a[10],i,j=0,n,temp;
printf("请输入数组元素的个数:\n");
scanf("%d",&n);
if(n>10)
printf("输入错误");
for(i=0;i<n;i++)
{printf("请输入%d数组元素",i);
scanf("%d\n",&a[i]);
}
getch();
j=a[0];
for(i=1;i<n;i++)
if(j>a[i])
temp=a[i];a[i]=j;j=temp;
for(i=0;i<n;i++)
printf("%d",a[i]);
getch();
}
2006-01-23 08:26
URDbest
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-1-23
收藏
得分:0 
以下是引用zhangjuan在2006-1-23 8:26:00的发言:
#include "stdio.h"
main()
{ int a[10],i,j,n,temp;
printf("请输入数组元素的个数:\n");
scanf("%d",&n);
if(n>10)
printf("输入错误");
for(i=0;i<n;i++)
{printf("请输入%d数组元素",i+1);
scanf("%d",&a[i]);
}
for (i=0;i<n-1;i++)
for (j=0;j<n-i;j++)
if (a[j]>a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
for (i=0;i<n;i++)
printf ("%d ",a[i]);
getch();
getch();
}

你的程序没有排序。
冒泡法
scanf("%d\n",&n);里面的\n不要,会出错的。


2006-01-24 20:14
zushuboderen
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-12-24
收藏
得分:0 
二楼的算法好奇怪啊 不是冒泡吧

do
{
flag=0;
for (i=0;i<n-2;i++)
if(a[i+1]>a[i])
{
t=a[i];a[i]=a[i+1];a[i+1]=t;
flag=1;
}
while(flag) ;



还有,为什么那里不能有\N?

冷静点............. 耐心点.............
2006-01-25 14:01
love_me
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2005-12-29
收藏
得分:0 
以下是引用zhangjuan在2006-1-23 8:26:00的发言:
main()
{int a[10],i,j=0,n,temp;
printf("请输入数组元素的个数:\n");
scanf("%d",&n);
if(n>10)
printf("输入错误"); //这里后面要加一句return;
for(i=0;i<n;i++) //这里直接i<10就好了
{printf("请输入%d数组元素",i);
scanf("%d\n",&a[i]);
}
getch();
j=a[0];
for(i=1;i<n;i++) //同上
if(j>a[i])
temp=a[i];a[i]=j;j=temp;//不明白是什么比较法,没有学过排序,这里看起来是交换2个数的值
//void change(int *ione, int *itwo) { int temp; temp=*ione; *ione=*itwo; *itwo=temp;}
// change(&i, &j);
for(i=0;i<n;i++) //同上
printf("%d",a[i]);
getch();
}


灌水无罪! 顶贴有理! <0_0>
2006-01-25 18:55
URDbest
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-1-23
收藏
得分:0 
三楼,你的方法是冒泡法,我的方法是冒泡法;
你的算法是把最小值沉到a[n];没有排序功能;
我的算法是通过使用循环冒泡,
把最大值沉到a[n]
倒数第二大的值沉到a[n-i]
……
依此类推
从而实现由小到大的排序。
在我学的C中,scanf函数双引号内的格式串除格式说明外,如果还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符。所以如果末尾有\n的话,你在输入数字的时候理论是要按两次回车才能输入这个数字,不过我试过按两次回车,却不能成功输入,必须要 “数字1 回车 任意字符 回车”才只能输入数字1。这样是很容易引起混乱的。

2006-01-25 20:23
快速回复:[讨论]关于数组排序的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030000 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved