c语言字符串快速排序
时间: 2023-11-06 22:06:49 浏览: 333
快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。对于C语言中的字符串快速排序,可以使用strcmp()函数来比较字符串的大小,具体实现方法如下:
1. 首先定义一个一维数组的指针,用来存储需要排序的字符串。
2. 定义一个quick()函数,传入的参数为字符串数组指针、开始下标和结束下标。
3. 在quick()函数中,设置基准数x为num[start],即第一个字符串。
4. 从右向左遍历数组,如果发现比基准数小的就把他放到基准数位置,然后i向后走一个;从左向右遍历数组,如果发现比基准数大的就把他放到上面空出来的j的位置,然后j向前走一个。
5. 当i==j时,把基准数放到此位置,就此实现了基准数左边比他小,基准数右边比他大的结果了。
6. 在i的左边再次调用quick()函数,在i的右端再次调用quick()函数。
7. 最后输出排序后的字符串数组。
下面是一个示例代码:
```
void quick(char *num[],int start, int finish)//传的是一维数组指针
{
if(start<finish)
{
int i=start,j=finish;
char *x=num[start];//x变成字符串
while(i<j)
{
while(i<j&&strcmp(num[j],x)>0)//比较字符串用strcmp()函数
j--;
if(i<j)
{
num[i]=num[j];
i++;
}
while(i<j&&strcmp(num[i],x)<0)// i++;
i++;
if(i<j)
{
num[j]=num[i];
j--;
}
}
num[i]=x;
quick(num,start,i-1);
quick(num,i+1,finish);
}
}
int main()
{
char* str[8]={"CHINA","JAPAN","KOBEA","USA","RUSSIA","UK","FRANCE","AUS"};//设置个一维数组的指针
int i;
printf("排序前:");
for(i=0;i<8;i++)
printf("%s " ,str[i]);//字符串的出
putchar('\n');
quick(str,0,7);//调用,不要下标越位
printf("排序后;");
for(i=0;i<8;i++)
printf("%s ",str[i]);
return 0;
}
```
阅读全文