首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

选择法对字符串排序有关问题

2012-09-05 
选择法对字符串排序问题#include stdio.h#include string.hvoid main(){void f(char (*p)[6],int n)i

选择法对字符串排序问题
#include <stdio.h>
#include <string.h>
void main()
{ void f(char (*p)[6],int n);
  int i;
int n=6;
  char str[10][6];
char (*p)[6];
  for(i=0;i<6;i++)
  scanf("%s",str[i]);
  p=str;
f(p,n);
printf("排序顺序");
for(i=0;i<6;i++)
printf("%s\n",str[i]);
}
void f(char (*p)[6],int n)
{ int i,j,k;
  char temp[6],*t=temp;
for(i=0;i<n-1;i++)
k=i;
for(j=i+1;j<n;j++)
if(p[k]>p[j]) j=k;

strcpy(t,p[k]);
strcpy(p[i],p[k]);
strcpy(p[k],t);

}

为什么用选择法不能换?(试过冒泡法可以)

[解决办法]

C/C++ code
#include <stdio.h>#include <string.h>void f(char (*p)[6],int n);void main(){         int i;    int n=6;    char str[10][6];    char (*p)[6];    for(i=0;i<6;i++)        scanf("%s",str[i]);    p=str;    f(p,n);    printf("排序顺序");    for(i=0;i<6;i++)        printf("%s\n",str[i]);}void f(char (*p)[6],int n){     int i,j,k;    char temp[6],*t=temp;    for(i=0;i<n-1;i++)    {        k=i;        for(j=i+1;j<n;j++)        {            if(p[k]>p[j])                k = j;        }        if( k != i )        {            strcpy(t,p[k]);            strcpy(p[i],p[k]);            strcpy(p[k],t);        }    }} 

热点排行