| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5039 人关注过本帖
标题:输入10个数字,使用选择排序的方法,将输入数字从小到大输出,然而,我输入 ...
只看楼主 加入收藏
涧边幽草
Rank: 2
等 级:论坛游民
帖 子:37
专家分:15
注 册:2015-11-4
收藏
得分:0 
回复 5楼 丁松
请问为什么第一个交换被我换成min1=a[j]之后,再输入数据就会输出错误的数据出来呢
2015-11-16 23:00
q0224100404
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2015-11-24
收藏
得分:0 
min2=min1;
temp=array[i-1];
array[i-1]=min2;
min2=temp;
printf("%d",min2);
最后输出的min2=temp=array[i-1],也就是说这里输出的就是你输入的
      
交换应该在内循环内完成,改成我这样
#include <stdio.h>
#include <stdlib.h>
void sort(int array[],int n);
#define N 10
int main()
{
    int i,a[N];
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a,10);
    return 0;
}
void sort(int array[],int n)
{
    int i,j,min1;
   
    for(i=0;i<n;i++)
    {
        min1=array[i];
        for(j=i;j<n;j++)
        {
            if(min1>array[j])
                min1=array[j],array[j]=array[i],array[i]=min1;
        }
        
    }
   
    for(i=0;i<n;i++) printf("%d",array[i]);
    printf("\n");
}

[此贴子已经被作者于2015-11-27 00:14编辑过]

2015-11-27 00:07
tredy6t
Rank: 2
等 级:论坛游民
帖 子:41
专家分:59
注 册:2015-8-6
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
void sort(int array[],int n);
#define N 10
void main()
{
    int i;
    int a[N];
    printf("input 10 numbers:\n");
    for(i=0;i<N;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a,N);
}
void sort(int array[],int n)
{
    int i,j,temp;
    for(i=0;i<n-1;i++)
        for(j=i+1;j<N;j++)
        if(array[i]>array[j])
        {
            temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
        printf("the sorted numbers:\n");
    for(i=0;i<N;i++)
        printf("%d ",array[i]);
    printf("\n");
}
2015-11-27 17:45
平常心q
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:120
专家分:550
注 册:2016-3-31
收藏
得分:0 
回复 4楼 wmf2014
数字0放在最后,为什么选择排序只能实现部分排序,排序功能混乱呢
2016-03-31 16:38
平常心q
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:7
帖 子:120
专家分:550
注 册:2016-3-31
收藏
得分:0 
回复 14楼 平常心q
已解决,应该是系统问题吧。重启再编辑,运行就OK
2016-04-01 10:48
kingfred
Rank: 1
等 级:新手上路
帖 子:4
专家分:6
注 册:2016-4-1
收藏
得分:0 
#include <stdio.h>
void sort(int array[], int length);
int main(void)
{
    int array[10];
    int i;
    printf("请输入10个整数:\n");
    for(i = 0; i < 10; ++i)
    {
        scanf("%d", &array[i]);
    }
    sort(array, 10);
    printf("排序后的整数如下:\n");
    for(i = 0; i < 10; ++i)
    {
        printf("%d\n", array[i]);
    }
    return 0;
}
void sort(int array[], int length)
{
    int i, j, pos;
    for(i = 0; i < length; ++i)
    {
        pos = i;
        for(j = i + 1; j < length-1; ++j)
        {
            if(array[j] < array[pos])
            {
                int temp;
                temp = array[j];
                array[j] = array[pos];
                array[pos] = temp;
            }
        }
    }
}
2016-04-01 16:34
快速回复:输入10个数字,使用选择排序的方法,将输入数字从小到大输出,然而,我 ...
数据加载中...
 
   



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

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