C语言——快速排序(递归实现)

快速排序属于一种划分交换排序方法,它采用了一种分治的策略。
基本思想如下:
(1)从待排序的数中选取一个数作为基准数,一般选取第一个数。
(2)把比基准数大的数放在基准数后面,把比基准数小的数放在基准数前面
(3)对基准数的左边和右边分别作第(2)步处理,直到排序完成。
C语言——快速排序(递归实现)_第1张图片
具体代码如下:

#include
int main() 
{
     
	void quicksort(int a[],int low,int high);
	int n,i,a[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
     
		scanf("%d",&a[i]);
	}
	
	quicksort(a,0,n-1);
	for(i=0;i<n;i++)
		printf("%d ",a[i]);

	return 0;
}

void quicksort(int a[],int low,int high)
{
     
	int i=low;
	int j=high;
	int temp=a[i];
	if(low<high)
	{
     
		while(i<j)       //当i=j时结束循环
		{
     
		while((a[j]>=temp)&&(i<j))   //处理右边
		{
     
			j--;
		}
		a[i]=a[j];
		while((a[i]<=temp)&&(i<j))      //处理左边
		{
     
			i++;
		}
		a[j]=a[i];
		}
		a[i]=temp;
		//第一轮结束,递归调用。i-1和j+1是因为中间数已经排好,不用再次递归
		quicksort(a,low,i-1);
		quicksort(a,j+1,high);
	}	
	else
	return ;
}

新手小白,出错的地方请大佬指正。
写的有点啰嗦,请读者包含。

你可能感兴趣的:(c语言)