| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 498 人关注过本帖
标题:[程序纠错]用选择法实现10个整数由小到大的排序.
只看楼主 加入收藏
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
结帖率:90.24%
收藏
已结贴  问题点数:20 回复次数:7 
[程序纠错]用选择法实现10个整数由小到大的排序.
所谓选择法就是先将十个数中最小的数与a[0]对调,再将a[1]-a[9]中最小的数与a[1]对调,以此类推~共比较九轮。
2015-03-30 22:02
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
#include<stdio.h>
int main()
{
    void list(int array[],int n);
    int a[10]={1,3,5,7,9,2,4,6,8,10};
    int i;
    for(i=0;i<9;i++)
    list(a,i);

    printf("The array is :\n");
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
    return 0;
}

void list(int array[],int n)
{
    int i,j,k,min;
    min=array[n];
    for(i=n;i<10;i++)
{
    if(array[i]<min)
{
    min=array[i];
    j=i;
}
}
    k=array[j];
    array[j]=array[n];
    array[n]=k;
}

//以上是我编写的程序编译链接没错,运行出错。希望得到大家的帮助~谢谢

既然还有不甘心
就还没到放弃的时候~
2015-03-30 22:03
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
list函数里初始化j值(红色字为增加的):for(i=n,j=n;i<10;i++)

能编个毛线衣吗?
2015-03-30 22:16
heso
Rank: 2
等 级:论坛游民
帖 子:20
专家分:39
注 册:2015-3-15
收藏
得分:10 
楼主写的好复杂 感觉没必要哈
你看我的是不是简便一些呢
#include<stdio.h>
int main()
{
    void list(int array[],int n);
    int a[10]={1,3,5,7,9,2,4,6,8,10};
    int i,j,temp;
    for(i=0;i<9;i++)
        for(j=i;j<10;j++)
            if(a[i]>a[j])
            {temp=a[i];a[i]=a[j];a[j]=temp;}//换值
    printf("The array is :\n");
    for(i=0;i<10;i++)
    printf("%d ",a[i]);
    return 0;
}
一起交流、
2015-03-31 08:40
heso
Rank: 2
等 级:论坛游民
帖 子:20
专家分:39
注 册:2015-3-15
收藏
得分:0 
3楼说的对 要给j赋一个初值 如果 if(array[i]<min)不成立的话 j没有值 array[j]是没意义的 也可以是for(i=n,j=i;i<10;i++)
2015-03-31 08:45
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
回复 4楼 heso
亲 你这个排序方法很好哦! 但不是选择法排序哈、题目要求用选择法排序的嘛!!
我编了一天验证程序哦:
#include<stdio.h>
int main()
{
    void print(int array[]);
    int a[10]={1,3,5,7,9,2,4,6,8,10};
    int i,j,temp;
    for(i=0;i<9;i++)
    {
        for(j=i;j<10;j++)
            if(a[i]>a[j])
            {
              temp=a[i];
              a[i]=a[j];
              a[j]=temp;
            }
           print(a);
    }
    return 0;
}

void print(int array[])
{
    int i,n;
    n=sizeof(array)/4;
    for(i=0;i<10;i++)
    printf("%d ",array[i]);
    putchar('\n');
}

既然还有不甘心
就还没到放弃的时候~
2015-04-01 15:07
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
回复 3楼 wmf2014
懂了撒~ thankyou

既然还有不甘心
就还没到放弃的时候~
2015-04-01 15:07
S140131022
Rank: 2
来 自:重庆邮电大学
等 级:论坛游民
帖 子:205
专家分:35
注 册:2014-10-9
收藏
得分:0 
回复 5楼 heso
要得~谢谢

既然还有不甘心
就还没到放弃的时候~
2015-04-01 15:08
快速回复:[程序纠错]用选择法实现10个整数由小到大的排序.
数据加载中...
 
   



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

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