c语言实现快速排序函数

c语言实现快速排序

众所周知,快速排序在排序算法中时间复杂度较为低,为O(nlogn),而选择,冒泡等排序的时间复杂度均为O(n^2)。
所以,现在我们来用c语言实现快速排序算法。
代码如下:

#include<stdio.h> 
int partation(int a[],int left,int right)//找出中值,并找出中值左右两边的数 
{
	int tem=0;
	tem=a[left];//使临时值等于列表左边第一个数 
	while(left<right)
	{
	 while(left<right&&a[right]>=tem)//从左面找到比tem小的值 
	  {
	  	right-=1;//往左走一步 
		  }
	 a[left]=a[right];//把右面的值写在左边的空位上 
	 while(left<right&&a[left]<=tem)
	 {
	 	left+=1;//往右走一步 
		 }
	a[right]=a[left];//把左面的值写在右面的空位上	
	 } 
 a[left]=tem;//把tem 归位 
 return left;	
}
int quit_sort(int a[],int left,int right)
 {
 int mid=0;
 if(left<right)
 {
 mid=partation(a,left,right);	
 quit_sort(a,left,mid-1);//递归调用快排函数 
 quit_sort(a,mid+1,right);
 }
}
 int main()
 {
 	int a[100],n;
 	printf("请输入需要排序的数字的数量:"); 
    scanf("%d",&n); 
	printf("输入若干个数字:");
 	for(int i=0;i<n;i++)
	 {
	 	scanf("%d",&a[i]);
	  }
	quit_sort(a,0,n-1); 
	for(int j=0;j<n;j++)
	{
		printf("%d ",a[j]);
	}
 	return 0;
 }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北月殇晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值