#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);