| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10685 人关注过本帖
标题:怎么实现对数组的降序排序
只看楼主 加入收藏
yinfuyong
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2009-10-31
结帖率:100%
收藏
已结贴  问题点数:4 回复次数:10 
怎么实现对数组的降序排序
怎么实现对数组的降序排序
  void sort( );
  int main()
  {
   int array[]={45,56,76,12,1,34,23,2,3}; //数字任意给出
   sort( );
   return 0;
  }
  void sort( )
  {
   。。。。。。。。。。
  }
    //注意,sort( ); 不能传参数
//////////////////////////////////////////////////////////////////////
这是一道面试题,所以才比较奇怪!

[ 本帖最后由 yinfuyong 于 2009-11-10 21:46 编辑 ]
搜索更多相关主题的帖子: return 
2009-11-10 20:42
万改称才
Rank: 3Rank: 3
来 自:温州
等 级:论坛游侠
帖 子:58
专家分:113
注 册:2009-11-10
收藏
得分:0 
为什么要用上函数
  只用数组就可以了
用数组里的冒泡法   

可以排出来的
main()
程序代码:
{
int a[10];
int i,j,t;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<10;i++)
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
 {
 t=a[j];a[j]=a[j+1];a[j+1]=t;
 }
 for(i=9;i>=0;i--)
 printf("%4d",a[i]);
}
具体 自己想想方法改下

[ 本帖最后由 万改称才 于 2009-11-10 20:51 编辑 ]

老师说 : 好好读书
2009-11-10 20:49
养下就很帅
Rank: 2
等 级:论坛游民
帖 子:32
专家分:50
注 册:2007-8-3
收藏
得分:0 
不传参数怎么引用arr
设置一个全局变量 *p=array 在main函数和sort中间 ?
2009-11-10 20:51
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
把数组定义为静态就不需传参数了

想象力征服世界
2009-11-10 22:35
xiefeng122
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:126
专家分:139
注 册:2009-4-1
收藏
得分:0 
这是原题吗?比较奇怪,如果说只能补充sort(),不能改动主函数,就没办法了,期待解答
2009-11-10 22:45
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:2 
我倒是想出来一个办法,也不知道对不对,在此献丑了。要把文件存为 tmp.c ,然后读入文件,存入数据,再对此排列


程序代码:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5
#define CHAR_END  100
void sort();
int cmp(const void *a, const void *b)
{
    return *(int *)b - *(int *)a;
}
int main(void)
{
    int num[N] = { 4, 2, 15, 1, 11 };
    sort();
    return 0;
}
void sort()
{
    char ch[CHAR_END];
    char *s = ch;
    int a[N];
    int i, j;
    FILE *fp;
    while ((fp = fopen("tmp.c", "r")) == NULL) ;
    while (!feof(fp))
    {
        fgets((char *)s, CHAR_END, fp);
        if (!strncmp(s, "    int num", 6))
        {
            break;
        }
    }
    while (*s < '0' || *s > '9')
    {
        s++;
    }
    for (i = 0; i < N; ++i)
    {
        a[i] = 0;
    }
    for (i = 0; i < N; )
    {
       
        if (*s >= '0' && *s <= '9')
        {
            a[i] = a[i] * 10 + *s - '0';
            s++;
        }
        else
        {
            ++i;
            while(*s<'0'||*s>'9')
            {
                s++;
            }
        }
       
    }
    qsort(a, N, sizeof(a[0]), cmp);
    for (i = 0; i < N; ++i)
    {
        printf("%3d", a[i]);
    }
    puts("");
    fclose(fp);
}

2009-11-11 01:30
yinfuyong
Rank: 2
等 级:论坛游民
帖 子:35
专家分:45
注 册:2009-10-31
收藏
得分:0 
回复 6楼 广陵绝唱
据说这是考查
    函数地址在内存中的布局
谢谢楼上的各位了
2009-11-11 09:35
hsm8592
Rank: 2
等 级:论坛游民
帖 子:55
专家分:57
注 册:2009-11-6
收藏
得分:0 
期待高手啊
2009-11-11 10:22
ml232528
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:367
专家分:879
注 册:2007-7-23
收藏
得分:2 
  void sort( );
  int main()
  {
   int array[]={45,56,76,12,1,34,23,2,3}; //数字任意给出
   sort( );
   return 0;
  }
  void sort( )
  {
   。。。。。。。。。。
  }
    //注意,sort( ); 不能传参数

只能在。。。。。。写吗? 有点难度

据说对于每个程序main()函数的是地址是固定的 那么array的地址是也是固定的
可以这样想 试试看



抛砖引玉 各位老大继续



void sort();

int main()
{
    int array[]={222,3,100,5,7,2,6};
    printf("%d\n",array);
    sort();   
    return 0;
}
void sort()
{
    int a[1];   
    printf("\n%d\n",(int *)(a+14*sizeof(int)));
    getchar();
}


可以看到 array的地址和(a+14*sizeof(int))相同

不同的编译器 这个值不一样

但a和array的地址是有联系的






[ 本帖最后由 ml232528 于 2009-11-11 14:26 编辑 ]

-︻┻┳═一 ☆ 悲伤的代价就是让自己明白什么是最重要的和应该珍惜的
2009-11-11 10:59
lixingxing52
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:31
专家分:33
注 册:2009-11-2
收藏
得分:0 
期待高手``
学习是王道`

新手上路,请多帮助。谢谢!
2009-11-11 11:02
快速回复:怎么实现对数组的降序排序
数据加载中...
 
   



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

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