将一篇英文文章存入数据文件IN.DAT(每行的宽度均小于80个字符,含标点符号和空格)。设计程序,以行为单位对字符按从大到小的顺序进行排序,输出处理结果,并将结果输出到文件OUT.DAT中。
?? 例:原文:dAeBfC.
?? CCbbAA
?? 结果:fedCBA.
?? bbCCAA
对这个论坛灰心,以删除,在见。
[此贴子已经被作者于2006-7-31 15:52:11编辑过]
恩 直接插入排序是插入排序的一种... 基本思想就是顺序的把待排序的元素按其关键字值的大小插入到已经排序元素子集合的适当位置.子集合的元素个数从一个开始逐次增加,当子集合大小最终与集合大小相同时排序完毕.
说的有点罗嗦...首先取第一个元素之后每次从次行中取出一个元素与其前面取出来的元素比较大小...大(小)就往前移动
例如:
d A e B f C /*上面你举例的原始序列*/
d A e B f C /*取出第一个元素d,然后取A 与其比较*/
e d A B f C /*取e,然后与其前面的d和A比较*/
e d B A f C /*取B,然后与其前面的e,d,A比较*/
f e d B A C /*取f,然后与其前面的e,d,B,A比较*/
f e d C B A /*取C,然后与其前面的f,e,d,B,A比较,整个序列比较结束*/
--------------------------------------------------------------------------------------
有了上面的过程,然后就可以通过函数实现了:
void sort(char a[],int n)
{
int i,j;
char temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp>a[j])
{
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
}
比较好理解 偶就不写注释了...如果有问题再讲吧