#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#define N 5
void QuickSort(char* a[],int left,int right)
{
int l,r;
char *f,*t;
l=left;
r=right;
f=a[(left+right)/2];//取中值为基值
while(l<r)
{
while(strcmp(a[l],f)<0&&l<right)//从左往右找到第一个小于f的值
{
++l;
}
while(strcmp(a[r],f)>0&&r>left)//从右往左找打第一个大于f的值
{
--r;
}
if(l<=r)
{
t=a[l];
a[l]=a[r];
a[r]=t;
++l;
--r;
}
}
if(l==r)
l++;
if(left<r)
{
QuickSort(a,left,l-1);
}
if(l<right)
{
QuickSort(a,r+1,right);
}
}
int main()
{
char* arr[N]={"one","world","dream","beijing","Olympic"};
int i;
printf("排序前:\n");
for(i=0;i<N;i++)
{
printf("%s\n",arr[i]);
}
QuickSort(arr,0,N-1);
printf("排序后:\n");
for(i=0;i<N;i++)
{
printf("%s\n",arr[i]);
}
system("pause");
return 0;
}
字符串数组的快速排序
最新推荐文章于 2022-03-23 12:09:14 发布