关于快速排序的逻辑原理是这样的:
将两个指针i,j分别指向表的起始和最后的位置,T为临时变量。
反复操作以下两步:
(1)j逐渐减小,并逐次比较j指向的元素和目标元素的大小,若p(j)<T则交换位置。
(2)i逐渐增大,并逐次比较i指向的元素和目标元素的大小,若p(i)>T则交换位置。
直到i,j指向同一个值,循环结束。
下面是源码
代码语言:javascript复制#include <stdio.h>
#include <stdlib.h>
void swap(int A[],int i,int j)
{
int temp=0;
if(A[i]>A[j])
{
temp=A[j];
A[j]=A[i];
A[i]=temp;
}
}
/* 快速排序 */
void quick_sort(int x[],int left, int right)
{
int temp = left;
int i;
if (left >= right)
return;
for (i = left 1; i<= right; i )
{
if(x[i] < x[left])
swap(x, temp, i);
}
swap(x, left, temp);
quick_sort(x,left, temp-1);
quick_sort(x,temp 1, right);
}
int main()
{
int number[]={10,9,8,7,6,5,4,3,2,1};
int i=0,len;
printf("start ....n");
len=(int)sizeof(number)/sizeof(*number);
printf("len =%dn",len);
quick_sort(number,0,9);
for(i=0;i<10;i )
{
printf("%d ",number[i] );
}
printf("n");
printf("end ....n");
exit(0);
}
代码已经编译调试过了,亲测可行。