该函数体如何理解

baige168 2003-06-27 10:19:57
在主函数中输入10个等长的字符串,用另一个函数对它们排序,然后在主函数输出10个已排好序的字符串。
程序:
#include<stdio.h>
#include<string.h>
void sort(char *);
void main()
{

int i;
char str[10][6];
printf("input 10 strings:\n");
for(i=0;i<10;i++)
scanf("%s",str[i]);
sort(str);
printf("now,the sequence is:\n");
for(i=0;i<10;i++)
printf("%s\n",str[i]);
}
void sort(char s[10][6])
{
int i,j;
char *p,temp[10];
p=temp;
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
strcpy(p,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],p);
}
}
函数体 sort 的流程是怎样的,请大家帮详细讲解。等候中---------
...全文
33 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chongchong2001 2003-06-28
  • 打赏
  • 举报
回复
经典的排序算法
看看书
多着呢!!
冒泡,选择,归并,堆,快速,插入,基数……
chinazcw 2003-06-28
  • 打赏
  • 举报
回复
数据结构书中的后面一般都有这种常用算法的介绍,楼主还是看一下书,可能会更有帮助!~
Beover1984 2003-06-28
  • 打赏
  • 举报
回复
冒泡排序,相临的两个元素比较
zteliubin 2003-06-27
  • 打赏
  • 举报
回复


bubble sort(泡泡排序!),看看数据结构书,加深一下理解!
晨星 2003-06-27
  • 打赏
  • 举报
回复
内部循环中,从头到尾不断比较相邻的字符串,如果发现前边的小于后边的,就交换,然后接着比较,这样,每次这样比较下来,最大的就“沉”到了最后面。

外部循环则控制比较的深度,因为,举例来说,第一轮内部交换结束后,最大的就沉到了最后,所以第二轮的时候就仅仅比较前面n-1个(j<9-i),然后让它们最大的沉下去就可以了。

这样,一轮一轮下来,整个数组就被排序了。

简而言之,就是第一次让最大的落到最后,然后让剩下的最大的落到倒数第二的位置让,让后再让剩下的最大的落到倒数第三的位置上,……
最后,排序就完成了。
MaiCle 2003-06-27
  • 打赏
  • 举报
回复
冒泡了。
luohualiushui 2003-06-27
  • 打赏
  • 举报
回复
冒泡

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧