快速排序详解

快速排序主要是分治的思想,找到枢轴元素,并递归的找两边的枢轴元素,直至有序

#include<stdio.h> 
void QuickSort(int A[],int low,int high){
	int l=low,h=high;
	if(low<high){
			int pivot=A[low];//将第一个元素作为枢轴元素
	     while(low<high){
		 while(low<high&&A[high]>=pivot){
			--high;
		 } 
		 //high指针从右往左找,直到找到比枢轴元素小的元素,
		 //将high所指的元素移到low所指的位置
			A[low]=A[high];

		 while(low<high&&A[low]<pivot){
			++low;
		 }
		 //low指针从左往右找比枢轴元素大的元素
		 //将大的元素赋给high所指的位置
			A[high]=A[low];

	}
	//最终high与low所指的位置就是存放枢轴元素的位置
	    A[low]=pivot;
		QuickSort(A,l,low-1);//左半部分进行递归排序 
		QuickSort(A,low+1,h);//右半部分进行递归排序 
  }
}
int main(){
	int a[14]={12,21,33,1,4,69,77,55,45,66,22,100,88,12};
	QuickSort(a,0,13);
	for(int i=0;i<14;i++)
	printf("%d\n",a[i]);
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值