| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2982 人关注过本帖
标题:用选择排序,把10位数从小到大排序。
只看楼主 加入收藏
宽的偶
Rank: 2
等 级:论坛游民
帖 子:32
专家分:16
注 册:2009-8-25
结帖率:57.14%
收藏
已结贴  问题点数:2 回复次数:5 
用选择排序,把10位数从小到大排序。
我读老谭书时,
   里面解这题的算法思路:用数组解,选择排序法。

    具体解题思路:用s[1]比较s[2]~~s[10],书是这样说,如果s[2]~~~s[10]之中存在比s[1]小的数时,选出其中最大的数s[i]和s[1]替换。
    如果按书中的思路想下去,那么s[1]不是在替换后不是最小值了,而是比s[1]小和在s[2]到s[10]间最大的。
    我觉的他这题算法思路写错了。
   
   应该在 s[2]~~~~~s[10]间选出最小s[i],和s[1]替换。
   



我想问问大家,是我错了,还是谭浩强错了。

[ 本帖最后由 宽的偶 于 2009-12-31 23:08 编辑 ]
搜索更多相关主题的帖子: 选择 位数 从小到大 
2009-12-31 23:01
fqtb16
Rank: 7Rank: 7Rank: 7
来 自:上海
等 级:黑侠
帖 子:96
专家分:504
注 册:2009-12-28
收藏
得分:1 
选择排序它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕。
void Sort(int data[], int count)
{     
    int i, j, min, temp;
    for (i = 0; i < count - 1; i++)
    {
        min = i;
        for (j = i+1;j < count; j++)
        {
            if (data[j] < data[min])
            {
                min = j;
            }
        }
        temp = data[i];
        data[i] = data[min];
        data[min] = temp;
    }
}

爱拼才会赢
2010-01-01 06:48
jiangwu10057
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:341
专家分:667
注 册:2009-3-25
收藏
得分:1 
楼主下标错了·
是0~9
唐先生写的没错·····
2010-01-01 08:25
Alen0128
Rank: 4
等 级:业余侠客
帖 子:171
专家分:222
注 册:2009-12-26
收藏
得分:0 
回复 楼主 宽的偶
假设有10个数,算法就是这样的:
假设a[0]是最小值,让他与a[1]~a[9]之间的数依次比较,选出最小的值a[i],让他与a[0]交换(注意,此时原来的a[0]成为a[i]);然后假设a[1]为最小,让他与a[2]~a[9]依次比较。如此类推

-不想让你发现我 凌乱的脚步 ,我努力 跟上你的速度
2010-01-01 13:21
宽的偶
Rank: 2
等 级:论坛游民
帖 子:32
专家分:16
注 册:2009-8-25
收藏
得分:0 
还是很谢谢各位,
    2楼的兄弟,我是从a[1]元素开始的,所以下标没可以写到a[10]
    还有,很感谢1楼和3楼的哥们。
 
你们翻一下,谭浩强的C程序设计题解,数组那章,课后习题第二题,你们会发现谭浩强,确实写错了。
我的理解,和各位的就是一样的。
2010-01-01 16:00
zcy244105565
Rank: 2
等 级:论坛游民
帖 子:7
专家分:20
注 册:2010-1-1
收藏
得分:0 
应该没有错吧
2010-01-01 22:50
快速回复:用选择排序,把10位数从小到大排序。
数据加载中...
 
   



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

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