| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖
标题:[求助]关于插入排序法的实现???
只看楼主 加入收藏
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:2 
[求助]关于插入排序法的实现???

程序运行结果如下:
Please input String number(<5):5
Please input 1 String :Welcome
Please input 2 String :IMTI
Please input 3 String :Apple
Please input 4 String :Teacher
Please input 5 String :ARM

Output String…
ARM
Apple
IMTI
Teacher
Welcome
Press any key to continue

以下是全部程序内容:
但是运行的结果不对
Output String…
Apple
ARM //前2个字符串的顺序不对
IMTI
Teacher
Welcome
Press any key to continue

请帮忙修改Sort()函数的插入排序法好让程序运行结果正确
谢谢啦。。。急急急。。。

#include<stdio.h>
#include<string.h>
#include<malloc.h>


int Accept(char *string[5]);
void Sort(char *name[],int n);
void Print(char *name[],int n);

main()
{
int n=0;
char *str[5];
n=Accept(str);
Sort(str,n);
Print(str,n);
}

int Accept(char *string[])
{
int i,n;
printf("Please input String number(<5):");
scanf("%d",&n);
for(i=0;i<n;i++)
{
string[i] = (char*)malloc(20);
printf("Please input %d String :",i+1);
scanf("%s",string[i]);
}
return n;
}

void Sort(char *name[],int n)//插入排序法
{
int i,j;
char *s;
char c;
for(i=1;i<n;i++)
{
c=name[i][0];
s=name[i];
j=i-1;
while(j >= 0 && name[j][0] > c)
{
name[j+1]=name[j];
j=j-1;
}
name[j+1]=s;
}
}

void Print(char *name[],int n)
{
int i;
printf("Output String...\n");
for(i=0;i<n;i++)
printf("%s\n",name[i]);
}

2007-05-30 08:58
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
给你看一个原汁原味的插入排序:
int InsertOder(int *Array, int size) //数组中从Array[1]开始存数据,size为数组长度
{
int i,j;
for(i=2;i<size;i++)
{
if(Array[i]<Array[i-1])
for(j=i-1,Array[0]=Array[i];Array[0]<Array[j];--j)
Array[j+1]=Array[j];
Array[j+1]=Array[0];
}
return 0;
}

这个虽然不能直接解决楼主的问题,不过稍做修改就行了.首先Array换为char *Array[],然后Array[]中元素不能直接比较大小,像Array[i]<Array[i-1要换为strcmp(Array[i],Array[i-1)<0.
2007-05-30 14:44
红影
Rank: 1
等 级:新手上路
威 望:2
帖 子:659
专家分:0
注 册:2006-2-22
收藏
得分:0 
咱们西安的就是厉害!!!

上午这个问题我解决了。不过还是要感谢你的热心帮助啊!

生命中,不断有人离开和进入。于是,看见的,看不见了;记住的,遗忘了。
2007-05-30 16:15
快速回复:[求助]关于插入排序法的实现???
数据加载中...
 
   



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

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