| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1923 人关注过本帖
标题:请问如何实现数组的逆序输出和从小到大排列?(最简写法)
只看楼主 加入收藏
mjx2009
Rank: 1
来 自:济南
等 级:新手上路
帖 子:18
专家分:4
注 册:2009-4-23
结帖率:75%
收藏
已结贴  问题点数:15 回复次数:6 
请问如何实现数组的逆序输出和从小到大排列?(最简写法)
请问如何实现数组的逆序输出和从小到大排列?(最简写法)
int 类型数组
搜索更多相关主题的帖子: 如何 
2011-04-09 13:46
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:5 
程序代码:
#include<stdio.h>
void main()
{
    int a[10] = {1,2,3,4,5,10,9,8,7,6};
    int i = 10,j = 0,k = 0,temp;
    while(i>0)
    {
        printf("%d ",a[--i]);
    }

    //下面的排序用选择法
    for(i=0;i<10-1;i++)
    {
        k=i;
        for(int j=i+1;j<10;j++)
        {
            if(a[j]>a[k])
                k=j;
        }
        if(i!=k)
        {
            temp=a[i];
            a[i]=a[k];
            a[k]=temp;
        }
    }
    printf("\n");

    i = 10;
    while(i > 0)
    {
        printf("%d ",a[--i]);
    }

}

                                         
===========深入<----------------->浅出============
2011-04-09 13:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
补充一下  后面的输出排序之后的东西是逆序输出的

所以前面的排序是按照从大到小的顺寻排列的  楼主见谅

后面的输出我粘代码了

                                         
===========深入<----------------->浅出============
2011-04-09 14:01
mjx2009
Rank: 1
来 自:济南
等 级:新手上路
帖 子:18
专家分:4
注 册:2009-4-23
收藏
得分:0 
回复 2楼 laoyang103
While中i应该大于等于0吧,这样才能输出第一位。
2011-04-11 08:54
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:10 
最简写法不会。 只会普通的。
程序代码:
#include <stdio.h>

int main (void) {

        int a[5]={3,2,6,1,7};
        int i=5,j,temp;

//reverse
        while(i--&&i>=0) { printf ("%i ",a[i]); }
        printf ("\n");

//sort
        for(i=0;i<4;i++) {
                for(j=i+1;j<5;j++) {
                        if(a[i]>a[j]) {
                                temp=a[i];
                                a[i]=a[j];
                                a[j]=temp;
                        }
                }
        }

//display sorted
        j=0;
        while(j<5) {
                printf ("%i ",a[j]);
                j++;
        }
        printf ("\n");

        return 0;

}



[ 本帖最后由 ansic 于 2011-4-11 10:23 编辑 ]

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-11 10:21
嗯嗯ENEN
Rank: 1
等 级:新手上路
帖 子:17
专家分:6
注 册:2011-4-10
收藏
得分:0 
回复 2楼 laoyang103
   if(i!=k)
        {
            temp=a[i];
            a[i]=a[k];
            a[k]=temp;


弱弱问下,这句的意思,哈
2011-04-11 13:19
逍遥乖乖
Rank: 2
等 级:论坛游民
帖 子:44
专家分:56
注 册:2011-4-8
收藏
得分:0 
回复 6楼 嗯嗯ENEN
当I不等于K时,互换两个值
2011-04-11 16:29
快速回复:请问如何实现数组的逆序输出和从小到大排列?(最简写法)
数据加载中...
 
   



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

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