免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1502 | 回复: 2
打印 上一主题 下一主题

选择排序问题,排错误谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-12 19:58 |只看该作者 |倒序浏览
本帖最后由 liuqingzhu 于 2012-05-12 20:30 编辑

void choise(int a[],int n)

{
        int i,j,k,temp;
       
        for(i=0;i<n-1;i++)
        {
               
                k=i; /*给记号赋值*/
               
                for(j=i+1;j<n;j++)
                       
                {
                        if(a[k]>a[j])
                        {
                                k=j; /*是k总是指向最小元素*/
                        }
                        if(k!=i)
                        { /*当k!=i是才交换,否则a即为最小*/
                               
                                temp=a;
                               
                                a=a[k];
                               
                                a[k]=temp;
                               
                        }
                }
               
        }
       
}
void main()
{
        int a[10]={23,675,75,23,8,64,89,212,543,234};
        //randnum(a,10);
       
        printf("输出原始数据:\n");
        print(a,10);
        //insert(a,10);
        choise(a,10);
        printf("输出排序数据:\n");
        print(a,10);
}

//结果不对,那个地方出错误了,请高手帮助改正一下

论坛徽章:
0
2 [报告]
发表于 2012-05-14 01:40 |只看该作者
本帖最后由 yue_5516 于 2012-05-14 01:42 编辑

仅供参考:
  1. #include <stdio.h>

  2. void choise(int a[],int n)
  3. {
  4.         int i,j,k,temp;
  5.         for( i=0; i<n-2 ; i++ )
  6.         {
  7.                 temp=a[i];
  8.                 for( j=i+1; j<n ; j++ )
  9.                 {
  10.                         if( temp<a[j] )
  11.                         {
  12.                                 continue;
  13.                         }
  14.                         else
  15.                         {
  16.                                 temp=a[j];
  17.                                 k=j;
  18.                         }       
  19.                 }
  20.                 a[k]=a[i];
  21.                 a[i]=temp;
  22.         }
  23. }

  24. void ptf(int a[],int n)
  25. {
  26.         int i;
  27.         for( i=0; i<n ; i++ )
  28.         {
  29.                 printf("%d ",a[i]);
  30.         }
  31.        
  32. }

  33. void main()
  34. {
  35.         int a[10]={23,675,75,23,8,64,89,212,543,234};
  36.         ptf(a,10);
  37.         choise(a,10);
  38.         printf("\n");
  39.         ptf(a,10);
  40. }
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-05-14 17:23 |只看该作者
谢谢.......................!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP