| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 298 人关注过本帖
标题:这个插入排序的代码有点问题,求教!!!
只看楼主 加入收藏
佩恩六道
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-2-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
这个插入排序的代码有点问题,求教!!!
#include<stdio.h>
#include<conio.h>
int a[10]={23,17,13,36,9,51,14,25,32,3};
int b[10]={0};
void move(int i,int j)
{
    int temp;
    for(temp=i;temp>j;temp--)
        b[temp]=b[temp-1];
    b[j]=a[i];
}
void insert(void)
{
    int i,j;
    for(i=1;i<10;i++)
         for(j=0;j<i;j++)
         if(a[i]>b[j])
             continue;
              else
             move(i,j);
}
int main()
{
    int i;
    b[0]=a[0];
    insert();
    for(i=0;i<10;i++)
          printf("%4d",b[i]);
    getch();
    return 0;
}
2011-05-29 00:39
mobiqiliang
Rank: 2
等 级:论坛游民
帖 子:9
专家分:46
注 册:2011-5-29
收藏
得分:20 
错误实在太多了 从第一句int开始  。。。。
2011-05-29 14:50
mobiqiliang
Rank: 2
等 级:论坛游民
帖 子:9
专家分:46
注 册:2011-5-29
收藏
得分:0 
核心代码错误点。。void move(int i 降,int j)
  这个函数实现的交换功能 只在函数内部做了交换 并没有对调用函数的变量进行交换       事实上这个函数新建了局部变量i和j(先理解为A,B) 调用时把insert函数中的i j赋值给这里的A,B(也就是“i,j ”   两个函数重名  习惯不好 所以说先理解为A,B)  交换函数运行后  A,B值相互交换 但实际上调用函数insert里的i,j并没有交换  因此这个函数根本不会排序  正确做法应该使用指针 将需要交换的两个值的指针付给int move(int*i,int*j) 调用运行后交换指针就行啦
2011-05-29 15:42
佩恩六道
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2011-2-20
收藏
得分:0 
非常感谢!!!
2011-06-01 14:14
快速回复:这个插入排序的代码有点问题,求教!!!
数据加载中...
 
   



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

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