| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:选择排序法!迷茫中!
只看楼主 加入收藏
yangguohui
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:18
专家分:21
注 册:2011-11-6
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:7 
选择排序法!迷茫中!
#include"stdio.h"

void main()
{
    int x[10]={4,2,7,8,9,10,11,24,5,6};
    int i,j,k,temp;
    for(i=0;i<9;i++)
    {
        k=i;
        for(j=i+1;j<10;j++)
            if(x[i]>x[j])
                k=j;
            if(k!=i)
            {
                temp=x[k];
                x[k]=x[i];
                x[i]=temp;
            }
    }
    for(i=0;i<10;i++)
        printf("%4d",x[i]);
    printf("\n");
}
输出结果不正确...........求解决
搜索更多相关主题的帖子: include 
2011-11-08 22:03
tan2010
Rank: 2
等 级:论坛游民
帖 子:66
专家分:71
注 册:2011-10-13
收藏
得分:20 
#include"stdio.h"

void main()
{
    int x[10]={4,2,7,8,9,10,11,24,5,6};//定义一个数组
    int i,j,k,temp;
    for(i=0;i<9;i++)//设置一双循环,i为第一层
    {
        k=i;//为交换而用的
        for(j=i+1;j<10;j++)
            if(x[i]>x[j])//将每个想x[i]与其后面的数作比较,如:i=0时,得比较9次,i=1,得比较8次。
                k=j;
            if(k!=i)//如果x[i]>x[j],就将想x[i]与x[j]交换,注意前面有k=i;所以才可以的。
            {
                temp=x[k];
                x[k]=x[i];
                x[i]=temp;
            }
    }
    for(i=0;i<10;i++)
        printf("%4d",x[i]);
    printf("\n");
}
不用k也可以:
#include"stdio.h"//选择排序法

void main()
{
    int x[10]={4,2,7,8,9,10,11,24,5,6};
    int i,j,temp;
    for(i=0;i<9;i++)
    {
      
        for(j=i+1;j<10;j++)
        {
            if(x[i]>x[j])
               
            {
                temp=x[j];
                x[j]=x[i];
                x[i]=temp;
            }
        }
    }
    for(i=0;i<10;i++)
        printf("%4d",x[i]);
    printf("\n");
}
2011-11-08 22:27
yangguohui
Rank: 2
来 自:河南
等 级:论坛游民
帖 子:18
专家分:21
注 册:2011-11-6
收藏
得分:0 
谢谢大侠指点!你的程序很棒,调试结果正确!但是我想知道教材上的算法为什么做不到?
2011-11-08 22:37
tan2010
Rank: 2
等 级:论坛游民
帖 子:66
专家分:71
注 册:2011-10-13
收藏
得分:0 
我不知道你那是什么教材了,不过你那个程序在VC下也是可以运行的!!!
2011-11-08 22:47
tan2010
Rank: 2
等 级:论坛游民
帖 子:66
专家分:71
注 册:2011-10-13
收藏
得分:0 
看错了!!
#include"stdio.h"
 void main()
 {
    int x[15]={4,2,7,8,9,10,11,24,5,6};
    int i,j,k,temp;
    for(i=0;i<9;i++)
    {
        k=i;
        for(j=i+1;j<10;j++)
        {   if(x[k]>x[j])//改了
               k=j;   
        }
    if(k!=i)
        {               
         temp=x[k];
             x[k]=x[i];
             x[i]=temp;            
    }
        
    }   
    for(i=0;i<10;i++)        
    printf("%4d",x[i]);   
    printf("\n");
}
2011-11-08 23:51
一只失语的猫
Rank: 2
等 级:论坛游民
帖 子:35
专家分:14
注 册:2011-10-26
收藏
得分:0 
楼上的大侠  如果用指针做要怎么改啊 求教!!  (菜鸟,刚刚学C)
2011-11-09 07:32
liuzr1110
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-11-9
收藏
得分:0 
把第二个if里面的提到第一个if,不要第二个if
2011-11-09 08:04
tan2010
Rank: 2
等 级:论坛游民
帖 子:66
专家分:71
注 册:2011-10-13
收藏
得分:0 
回复 5楼 tan2010
将if(x[i]>x[j])改为if(*[x+j]>*[x+j])
还有交换里面 也差不多 !!
2011-11-09 14:11
快速回复:选择排序法!迷茫中!
数据加载中...
 
   



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

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