快速排序算法

今天终于搞懂了快速排序算法,纪念一下
#include
void swap(int * num,int i,int j)
{
	int temp=num[i];
	num[j]=num[i];
	num[i]=temp;
}
int qsort(int *num,int left,int right)
{
     /*取第一个数作为基准,将第一个数交换位置,直到左边的数比它小,右边的数比它大*/
	 if(left>=right)
	 	return -1;
     int i=left,j=right;
     int pos=left,key=num[left]; 
     while(true)
     {
     	while(i < j && num[j] >= key)
     		j--;
     	num[i]=num[j];  pos=j;

     	while(i=j)
     		break;
     }
     num[pos]=key;
     printf("%d   %d\n",i,j);
     return pos;
}
void partition(int *num,int start,int stop)
{
   /*
   num是数组,start是开始下标,stop是结束下标*/
   int mid=qsort(num,start,stop);
   ///printf("%d\n",mid);
   if(mid==-1)
   	 return ;
   partition(num,start,mid-1);
   partition(num,mid+1,stop);
}
int num[10]={15,6,9,6,21,14,57,20,18,19};
int main()
{
	partition(num,0,9);
	for(int i=0;i<10;i++)
		printf("%d  ",num[i]);
	printf("\n");
}

你可能感兴趣的:(快速排序算法)