| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 719 人关注过本帖
标题:text
只看楼主 加入收藏
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
结帖率:98.33%
收藏
已结贴  问题点数:20 回复次数:10 
text
text


[此贴子已经被作者于2016-4-11 02:07编辑过]

2015-06-26 05:23
helloUJS
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:168
专家分:731
注 册:2013-3-27
收藏
得分:20 
括号加多了
void sort(int list[], int n)
{
    int i,j,min,temp;
   
    for(i=0;i<n-1;i++)    {
        min=i;
        for(j=i+1;j<n;j++)
           if(list[j]<list[min])
                min=j;
            SWAP(list[i],list[min],temp);
        
    }
}
2015-06-26 07:17
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:0 
程序代码:
每次内层循环结束才交换
for(i=0;i<n-1;i++){
    min=i;
    for(j=i+1;j<n;j++){
        if(list[j]<list[min]){
            min=j;
        }
    }
    SWAP(list[i],list[min],temp);
}
2015-06-26 09:19
lhfwl
Rank: 2
等 级:论坛游民
帖 子:4
专家分:12
注 册:2015-6-25
收藏
得分:0 
sort函数有错误,交换的地方存在错误,LZ可以举个例子试试!
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX_SIZE 101
#define SWAP(x,y,t) ((t)=(x),(x)=(y),(y)=(t))

void sort(int [], int);

int main(void)
{
    int i,n;
    int list[MAX_SIZE];
   
    printf("Enter the number of numbers to generate:");
    scanf("%d",&n);
    if(n<1 || n>MAX_SIZE){
        fprintf(stderr,"Improper value of n\n");
        exit (1);
    }
    for(i=0;i<MAX_SIZE;i++){
        list[i]=rand()%1000;
        printf("%d ",list[i]);
    }
    sort(list,n);
    printf("\n Sorted array:\n");
    for(i=0;i<n;i++){
        printf("%d ",list[i]);
    }
    printf("\n");
    getch();
   
    return 0;
}

void sort(int list[], int n)
{
    int i,j,temp;
   
    for(i=0;i<n-1;i++){
        for(j=i+1;j<n;j++){
            if(list[j]<list[i])
            {
            SWAP(list[i],list[j],temp);
            }
        }
    }
}
2015-06-26 09:56
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
如果if语句里面的条件成立,那么后继的循环list[min]就不是list[i]的值了,也就是list[i]并没有和后续的每个数去比较。
min是来捣乱的。

程序代码:
void sort(int list[], int n)
{
    int i,j,temp;
    
    for(i=0;i<n-1;i++){
        min=i;
        for(j=i+1;j<n;j++){
            if(list[j]<list[i])
               SWAP(list[i],list[i],temp);
        }
    }
}

人有多懒,编程就有多难。
2015-06-26 10:38
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
void sort(int list[], int n)
{
    int i,j,temp;
   
    for(i=0;i<n-1;i++){
        min=i;                                //会报错
        for(j=i+1;j<n;j++){
            if(list[j]<list[i])
               SWAP(list[i],list[i],temp);//好像没什么用
        }
    }
}
如果if语句里面的条件成立,那么后继的循环list[min]就不是list[i]的值了,也就是list[i]并没有和后续的每个数去比较。
min是来捣乱的。

min是来保存下标为i后面最小值的下标和i位置元素交换
2楼改的没错了

剑栈风樯各苦辛,别时冰雪到时春
2015-06-26 11:10
TAAAAB
Rank: 7Rank: 7Rank: 7
来 自:湖南
等 级:黑侠
威 望:1
帖 子:243
专家分:635
注 册:2011-5-29
收藏
得分:0 
回复 6楼 林月儿
程序代码:
更正下五楼自己的垃圾代码,呵呵,抱歉!
void sort(int list[], int n)
{
    int i, j,temp;

    for (i = 0; i<n - 1; i++)    
        for (j = i + 1; j<n; j++)
            if (list[j]<list[i])
                SWAP(list[i], list[j], temp);
}



程序代码:
void sort(int list[], int n)
{
    int i, j, min, temp;

    for (i = 0; i<n - 1; i++)    
    {
        min = i;
        for (j = i + 1; j < n; j++)
        {
            if (list[j] < list[min])
                min = j;
        }
        if (i != min)
            SWAP(list[i], list[min], temp);

    }
}

人有多懒,编程就有多难。
2015-06-26 11:55
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 

二楼一语惊醒梦中人。
2015-06-26 17:35
林月儿
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:湖南
等 级:版主
威 望:138
帖 子:2277
专家分:10647
注 册:2015-3-19
收藏
得分:0 
回复 8楼 hjx1120
语法错误编译器应该会提示的,你没看吗?

剑栈风樯各苦辛,别时冰雪到时春
2015-06-26 17:38
hjx1120
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:李掌柜
等 级:贵宾
威 望:41
帖 子:1314
专家分:6927
注 册:2008-1-3
收藏
得分:0 
回复 9楼 林月儿
看电视去了,忘了把自己想象成编译器,
变量在代码块中的生存周期没有算在内,
比较时出现了可怕的偏差,我错了
2015-06-26 19:16
快速回复:text
数据加载中...
 
   



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

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