标题:插入排序问题
只看楼主
想你的天空
Rank: 2
等 级:新手上路
威 望:5
帖 子:610
专家分:0
注 册:2004-12-30
 问题点数:0 回复次数:2 
插入排序问题
#include"stdio.h"
#include"string.h"
typedef struct
{   int vec[4];
    int len;
}node;
void PaiXu_CharRu(node *r1)
{  int i,j;
   for(i=2;i<=r1->len;i++)
   {  r1->vec[0]=r1->vec[i];
      j=i-1;
     while(r1->vec[0]<r1->vec[j])
     {  r1->vec[j+1]=r1->vec[j];
        j--;
     }
     r1->vec[j+1]=r1->vec[0];
   }
}
main()
{  node *r1;
   int x,i;
  r1=(node*)malloc(sizeof(node));
  for(i=0;i<4;i++)
  scanf("%d",&r1->vec[i]);
  r1->len=4;
  PaiXu_CharRu(r1);
  printf("\n");
  for(i=0;i<4;i++)
  printf("%d",r1->vec[i]);
}  // 问题是第1个元素不能排序
搜索更多相关主题的帖子: include 
2005-03-30 19:13
lntuzjc
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-3-23
得分:0 
#include"stdio.h" #include"string.h" typedef struct { int vec[5]; /*插入排序使用第一个元素作为监视哨,因此,数组大小应该比实际元素个数多一个*/ int len; }node; void PaiXu_CharRu(node *r1) { int i,j; for(i=2;i<=r1->len-1;i++) /*下标最大应该为长度-1*/ { r1->vec[0]=r1->vec[i]; j=i-1; while(r1->vec[0]<r1->vec[j]) { r1->vec[j+1]=r1->vec[j]; j--; } r1->vec[j+1]=r1->vec[0]; } } main() { node *r1; int x,i; r1=(node*)malloc(sizeof(node)); for(i=1;i<=4;i++) /*给数组中的元素赋值(除第一个元素外,应为第一个元素要作临时变量用)*/ scanf("%d",&r1->vec[i]); r1->len=5; PaiXu_CharRu(r1); printf("\n"); for(i=1;i<=4;i++) /*输出的结果中,不应该包括第一个元素(第一个元素是监视哨,相当于一个临时变量),因此,下标从1开始*/ printf("%d\t",r1->vec[i]); } // 问题是第1个元素不能排 现在第一个元素也可以排了!
2005-03-30 22:27
想你的天空
Rank: 2
等 级:新手上路
威 望:5
帖 子:610
专家分:0
注 册:2004-12-30
得分:0 
高手啊, 听了10年的课不如看你回一个贴~

2005-03-31 13:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-14421-1-1.html




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

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