标题:对是个整数排序
只看楼主
玉立
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2011-10-17
结帖率:100%
已结贴  问题点数:2 回复次数:4 
对是个整数排序
用选择法对是个整数排序 我写的程序如下
#include<stdio.h>
void main()
{
    int i,j,min,temp,a[11];
    printf("enter data :\n");
    for(i=0;i<10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    printf("\n");
    printf("the orginal number :\n");
    for(i=0;i<10;i++)
    printf("%5d",a[i]);
    printf("\n");
    for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a[i]>a[j])
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    printf("\nthe sorted number :\n");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
    printf("\n");
}
发现每次对十个数排序但是最后显示结果始终不对
想问是不是以下这一段错了
 for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a[i]>a[j])
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
参考书上的运行后是对的,但我觉得我的那个也没错啊,但就是运行结果不对

for(i=0;i<9;i++)
    {
        min=i;
        for(j=i+1;j<10;j++)
            if(a[min]>a[j])
            {
                min=j;
                temp=a[i];
                a[i]=a[min];
                a[min]=temp;
            }
    }


                    


[ 本帖最后由 玉立 于 2011-10-20 12:15 编辑 ]
搜索更多相关主题的帖子: include number enter 
2011-10-20 12:13
玉立
Rank: 2
等 级:论坛游民
帖 子:32
专家分:24
注 册:2011-10-17
得分:0 
以下是引用玉立在2011-10-20 12:13:33的发言:

用选择法对是个整数排序 我写的程序如下
#include
void main()
{
    int i,j,min,temp,a[11];
    printf("enter data :\n");
    for(i=0;i<10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a);
    }
    printf("\n");
    printf("the orginal number :\n");
    for(i=0;i<10;i++)
    printf("%5d",a);
    printf("\n");
    for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a>a[j])
        {
            temp=a;
            a=a[j];
            a[j]=temp;
        }
    }
    printf("\nthe sorted number :\n");
    for(i=0;i<10;i++)
        printf("%5d",a);
    printf("\n");
}
发现每次对十个数排序但是最后显示结果始终不对
想问是不是以下这一段错了
 for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a>a[j])
        {
            temp=a;
            a=a[j];
            a[j]=temp;
        }
    }
参考书上的运行后是对的,但我觉得我的那个也没错啊,但就是运行结果不对

for(i=0;i<9;i++)
    {
        min=i;
        for(j=i+1;j<10;j++)
            if(a[min]>a[j])
            {
                min=j;
                temp=a;
                a=a[min];
                a[min]=temp;
            }
    }


                    
我自己发现问题了,懂了,呵呵,大家有好的方法也都分享一下哦
2011-10-20 12:22
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
得分:1 
要是排序俺就直接调sort或者qsort了,好久没自己写了
2011-10-20 13:39
kptan
Rank: 2
等 级:论坛游民
帖 子:7
专家分:17
注 册:2010-11-10
得分:1 
#include<stdio.h>
void main()
{
    int i,j,min,temp,a[11];
    printf("enter data :\n");
    for(i=0;i<=10;i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
    printf("\n");
    printf("the orginal number :\n");
    for(i=0;i<=10;i++)
    printf("%5d",a[i]);
    printf("\n");
    for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a[i]>a[j])
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
    printf("\nthe sorted number :\n");
    for(i=0;i<10;i++)
        printf("%5d",a[i]);
    printf("\n");
}
开始的啊 a[10] 你没赋值
2011-10-20 16:15
lin471306489
Rank: 4
等 级:业余侠客
帖 子:136
专家分:247
注 册:2011-8-16
得分:1 
for(i=0;i<=9;i++)
    {
        for(j=i+1;j<=10;j++)
        if(a[i]>a[j])
        {
            temp=a[i];
            a[i]=a[j];
            a[j]=temp;
        }
    }
这样用是起泡排序,
而下面的是选择排序,当然两个都可以用,
for(i=0;i<9;i++)
    {
        min=i;
        for(j=i+1;j<10;j++)
            if(a[min]>a[j])
            {
                min=j;
                temp=a;
                a=a[min];
                a[min]=temp;
            }
    }
2011-10-20 23:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-352997-1-1.html




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

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