欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

quicksort

程序员文章站 2022-05-18 09:28:32
...

quicksortquicksortquicksort

在这里插入代码片
#include<stdio.h>
int part(int a[],int p,int r);
void quicksort(int a[],int p,int r)
{
	int q;
	if(p<r)
	{
		q=part(a,p,r);
		quicksort(a,p,q-1);
		quicksort(a,q+1,r);
	}
 } 
 int part(int a[],int p,int r)
 {
 	int x,i,t,j;
 	i=p-1;
 	x=a[r];
 	
 	for(j=p;j<r;j++)
 	{
 		if(a[j]<=x)
 		{
 			i++;
 			t=a[i];
 			a[i]=a[j];
 			a[j]=t;
 			
		 }
	 }
	 t=a[i+1];
	 a[i+1]=a[r];
	 a[r]=t;
	 return i+1;
 }
 int main()
 {
 	int a[8]={2,8,7,1,3,5,6,4};
 	int i;
 	quicksort(a,0,7);
 	for(i=0;i<8;i++)
 	{
 		printf("%3d",a[i]);
	 }
 	
 	
 	
 }

图中的partition即代码中的part函数是为了达到a[q]>a[i],i<q;
a[q]<a[j],j>q;是为了把a[r]放到中间