快速排序

快速排序法是一种经常提及,被很多公司喜欢用来考察的排序方法,它的平均时间复杂度为O(nlongn),最差时间复杂度为O(n*n)。

/* Note:Your choice is C IDE */
#include "stdio.h"
void quick_sort(int a[],int n);//函数的声明后要加分号
int main()
{
int i;
int a[10];
printf("please input 10 datas:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
quick_sort(a,10);
printf("10 datas after sort:\n");
for(i=0;i<10;i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}
void quick_sort(int a[],int n)
{
int temp;
int i=0;
int j=n-1;
if(n==1)//递归结束的条件
 return ;
else
{
while(i<j)
 {
 	while(a[j]>a[i])//从右向左遍历排序
 	 j--;
 	 if(i<j)
 	 {
 	 temp=a[i];
 	 a[i]=a[j];
 	 a[j]=temp;
 	 i++;
 	 }
 	 while(a[j]>a[i])//从左向右遍历排序
 	 i++;
 	 if(i<j)
 	 {
 	  temp=a[i];
 	 a[i]=a[j];
 	 a[j]=temp;
 	 j--;
 	 }
 }
//此时i==j,标杆元素左边都是比其小的数,右边全是比它大的数.第一步完成
quick_sort(a,i);//第二步,对标杆元素左边的数列使用快速排序
quick_sort(a+i+1,n-i-1);//第三步,对标杆元素右边的数列使用快速排序
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值