| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 309 人关注过本帖
标题:请问我的这个排序法排序为什么结果不对?
只看楼主 加入收藏
zzzmx
该用户已被删除
收藏
已结贴  问题点数:10 回复次数:7 
请问我的这个排序法排序为什么结果不对?
提示: 作者被禁止或删除 内容自动屏蔽
搜索更多相关主题的帖子: return include void 
2012-10-14 10:50
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:2 
                 //k=j;
                 t=a[k];
                 a[k]=a[j];
                 a[j]=t;    
2012-10-14 11:20
bc小智
Rank: 1
等 级:新手上路
帖 子:1
专家分:1
注 册:2012-10-14
收藏
得分:1 
void sort(int a[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    { for(j=i+1;j<n;j++)
        {
            if(a[j]<a[j-1])
            {
               
                t=a[j];
                a[j]=a[j-1];
                a[j-1]=t;
            }
        }
    }
}
我也是新手 瞎写的
2012-10-14 11:28
zzzmx
该用户已被删除
收藏
得分:0 
回复 楼主 zzzmx
提示: 作者被禁止或删除 内容自动屏蔽
2012-10-14 11:38
爱闹的娃
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:265
专家分:975
注 册:2011-10-23
收藏
得分:1 
回复 4楼 zzzmx
if(a[j]<a[k])这里????想想,每次都和已经交换的K进行比较......能出来结果吗???

应该是将小于a[i]的值与a[i]进行交换,然后再进行与a[i](已经改变)的比较....并不是与a[k] (在你的程序中,如果有交换,k是等于j的...) 比较....

if(a[j]<a[i])改为这样就ok
2012-10-14 11:53
liman123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:79
专家分:178
注 册:2012-10-6
收藏
得分:6 
程序只有点小问题,下面我帮你改过来了:
#include <stdio.h>
 int main()
 {
     void sort(int a[],int n);
     int a[10],i;
     printf("enter array:\n");
     for(i=0;i<10;i++)
     {        
         scanf("%d",&a[i]);
     }
     sort(a,10);
     printf("the sort array is\n");
     for(i=0;i<10;i++)
     {
         printf("%d\t",a[i]);
     }
     printf("\n");
     return 0;
 }
 void sort(int a[],int n)
 {
     int i,j,k,t;
     for(i=0;i<=n-1;i++)//应为"i<=n-1"
     {
         
         for(j=i+1;j<n;j++)
         {
             k=i;      //k=i应放在此处!
             if(a[j]<a[k])
             {
                 k=j;
                 t=a[k];
                 a[k]=a[i];
                 a[i]=t;
             }
         }
     }
 }
2012-10-14 12:23
孟星魂
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2012-10-12
收藏
得分:0 
错的地方比较多,强烈建议楼主改用冒泡法进行排序。
#include <stdio.h>
void main()
{
    void sort(int a[],int n);
    int a[10],i;
    printf("enter array:\n");
    for(i=0;i<10;i++)      
    scanf("%d",&a[i]);
    sort(a,10);
    printf("the sort array is\n");
    for(i=0;i<10;i++)
    printf("%4d",a[i]);
    printf("\n");
}
void sort(int a[],int n)
{
    int i,j,t;
    for(i=0;i<n-1;i++)
       for(j=0;j<n-1-i;j++)
           if(a[j]>a[j+1])
           {
               t=a[j];
               a[j]=a[j+1];
               a[j+1]=t;
           }
}

[url=http://www.gqtong.mobi/]中国G球通[/url]
2012-10-16 15:53
abc00000
Rank: 2
等 级:论坛游民
帖 子:42
专家分:46
注 册:2012-10-16
收藏
得分:0 
新手,求助,请问你们都是用哪个平台写程序的,我用vc++6.0,编写你们的,怎么都不行
2012-10-16 17:16
快速回复:请问我的这个排序法排序为什么结果不对?
数据加载中...
 
   



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

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