weixin_57770100
2021-06-05 08:27
采纳率: 85.7%
浏览 5

这个题不太会,自己的有问题,想看一下改用冒泡法的正确代码

3.有若干图书,按字母顺序从小到大输出书名。voidsort(char*name[],intn){char*temp;inti,j,min;/*使用选择法排序*/for(i=0;i<n-1;i++)/*外循环:控制选择次数*/{min=i;/*预置本次最小串的位置*/for(j=i+1;j<n;j++)/*内循环:选出本次最小串*/if(strcmp(name[min],name[j])>0)/*请分析说明,写出该句的作用?*/min=j;/*存在更小的串保存之*/if(min!=i)/*存在更小的串,交换位置*/{temp=name[i];name[i]=name[min];name[min]=temp;}}}#include"stdio.hvoidmain(){char*name[5]={"BASIC","FORTRAN","PASCAL","C","FoxBASE"};inti;sort(name,5);for(i=0;i<5;i++)printf("%s\n",name[i]);/*输出排序结果*/}//请“冒泡法”重新试做本题,并调试运行。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • qfl_sdu 2021-06-05 08:35
    已采纳

    冒泡排序代码如下,如有帮助,请采纳一下,谢谢。

    #include <stdio.h>
    #include <string.h>
    void sort(char*name[],int n)
    {
    	int i,j;
    	char* tmp;
    	for (i = 0; i < n-1;i++)
    	{
    		for (j = 0; j < n-1-i;j++)
    		{
    			if (strcmp(name[j] , name[j+1]) > 0)
    			{
    				tmp = name[j];
    				name[j] = name[j+1];
    				name[j+1] = tmp;
    			}
    		}
    	}
    }
    
    void main()
    {
    	char*name[5]={"BASIC","FORTRAN","PASCAL","C","FoxBASE"};
    	int i;
    	sort(name,5);
    	for(i=0;i<5;i++)
    		printf("%s\n",name[i]);/*输出排序结果*/
    	
    }
    打赏 评论

相关推荐 更多相似问题