C语言快速排序代码
typedef int elem;
int position(elem *arr,int numSize)
{
elem temp;
int i=0,j=numSize-1;
temp = arr[i];
while (i<j)
{
while (arr[j]>=temp && i<j) --j;
if (arr[j]<temp)
arr[i++] = arr[j];
while (arr[i]<=temp && i<j) ++i;
if (arr[i]>temp)
arr[j--] = arr[i];
}
arr[i]=temp;
return i;
}
void qSort(elem *arr,int numSize)
{
int k;
if (numSize<1) return;
k=position(arr,numSize);
qSort(arr,k);
qSort(arr+k+1,numSize-1-k);
}
int main(void)
{
elem arr[]={8,2,6,5,3,6,2,7,45,2,666,132,4585,12,1,3,22,15,2,3,6,2,3,5};
int i=0;
int size=sizeof(arr)/sizeof(elem);
qSort(arr,size);
while (i<size)
{
printf("%d\t",arr[i]);
++i;
}
printf("\n");
return 0;
}-----------------心灵有家,生命才有路
#include <stdio.h>
typedef int elem;
int position(elem *arr,int numSize)
{
elem temp;
int i=0,j=numSize-1;
temp = arr[i];
while (i<j)
{
while (arr[j]>=temp && i<j) --j;
if (arr[j]<temp)
arr[i++] = arr[j];
while (arr[i]<=temp && i<j) ++i;
if (arr[i]>temp)
arr[j--] = arr[i];
}
arr[i]=temp;
return i;
}
void qSort(elem *arr,int numSize)
{
int k;
if (numSize<1) return;
k=position(arr,numSize);
qSort(arr,k);
qSort(arr+k+1,numSize-1-k);
}
int main(void)
{
elem arr[]={8,2,6,5,3,6,2,7,45,2,666,132,4585,12,1,3,22,15,2,3,6,2,3,5};
int i=0;
int size=sizeof(arr)/sizeof(elem);
qSort(arr,size);
while (i<size)
{
printf("%d\t",arr[i]);
++i;
}
printf("\n");
return 0;
}-----------------心灵有家,生命才有路