快速排序(C语言版二)

快速排序: 

#include<stdio.h>
void quicksort(int * arr, int left,int right);
void swap(int *a,int *b);
int main()
{
	int arr[10]={2,6,3,9,5,2,0,23,12,1};
	int length=sizeof(arr)/sizeof(arr[0]);
	quicksort(arr,0,length-1);
	for(int i=0;i<length;i++)
		printf("%d ",arr[i]);
}
void quicksort(int * arr, int left,int right)
{
	int i=left,j=right;
	int temp=arr[left];
	if(left>right)
		return;
	while(i<j)
	{
		while(arr[j]>=temp&&i<j)
			j--;
		while(arr[i]<=temp&&i<j)
			i++;
		if(i<j)
			swap(&arr[i],&arr[j]);	
	}
	arr[left]=arr[i];
	arr[i]=temp;
	quicksort(arr,left,i-1);
	quicksort(arr,i+1,right);
	return;
}
void swap(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}

口诀:快排左i右j,i<j;

           参考左一右先行;

           右大j--左小i++;

           左大于右相交换;

           i=j退出来;

           i指的值与参考换;

           值左值右重排序。

发布了33 篇原创文章 · 获赞 30 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/baidu_15547923/article/details/99690091