用C语言实现,从文件读取若干个单词,并将其排序,求大神编码。

对单词的比较采用strcmp(str1,str2)函数,排序方法:快速排序等。尽量缩短排序时间就可以了。采用从文件中读取单词。

#include <stdio.h>
#include <string.h>
FILE *stream;
void QuickSort(char *str[],int s,int t)
{
    int i=s,j=t;
    char* tmp;
    if(i<j)
    {
        tmp = str[i];
        do
        {
            while(i<j && strcmp(str[j],tmp))
                j--;
            if(i<j)
                {str[j] = str[i];
                 i++;}
            while(i<j && strcmp(tmp,str[i]))
                i++;
            if(i<j)
                {str[i] = str[j];
                j--;}
           }while(i<j);
          str[i] = tmp;
         QuickSort(str,s,j-1);
         QuickSort(str,j+1,t);
    }
}

int main(int argc,char **argv)
{
    char * str[15];
    int size;
   stream = fopen("data.txt","r");
   if(stream == NULL)
     sprintf("Can't Open File. \n");
   else
   {
       while(fscanf(stream,"%s",str) != EOF)
          {str++;
           size++;}
       fclose(stream);
   }
   QuickSort(str,1,size);
}

追问

追答要是快排有问题,试试这个选择排序
void StrSort(char *s[],int n)       
{  
     int i,j;  
     char *t;  
 
     for(i=0;i<n-1;i++)  
     {  
         for(j=i+1;j<n;j++)  
         {  
             if(strcmp(s[i],s[j])>0)    //比较  
             {  
                 t=s[i];  
                 s[i]=s[j];  
                 s[j]=t;  
             }  
          }  
     }  

StrSort(str,size);

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-09
同样坐等代码。。。追问

你等到了吗?

追答

还没,不过你这里不是有人给你回了嘛

相似回答