快速排序C语言代码

#include<stdio.h>
int get_length(int *A);//获得数组中元素个数
int quik_partition(int *A,int p,int r);//进行一趟快排
int exchange(int *a,int *b);//交换元素
void quik_sort(int *A,int p,int r);//快速排序控制函数
int  main()
{
	int i=0;
	int A[15]={35,86,8,111,8,44,99,34,24,68,34,17,96,33};

	quik_sort(A,0,get_length(A)-1);

	for(i=0;i<get_length(A);i++)
	printf("%6d",A[i]);

	return 1;
}
int get_length(int *A)
{
	int len=0;
	while(A[len]!='\0')
	len++;

	return len;
}
int quik_partition(int *A,int p,int r)
{
	int i,j,x;
	//init.     i和j均指向首段
	i=p;
	j=p;
	x=A[r];//最后一个元素作枢轴
		for(i=p;i<=r-1;i++)
		{
			if(A[i]<=x)
			{
			exchange(A+i,A+j);
			j++;
			}
		}
		exchange(A+j,A+r);
		return j;
}

void quik_sort(int *A,int p,int r)
{
	int pivot;
	pivot=quik_partition(A,p,r);
	if(p<pivot)
	quik_sort(A,p,pivot-1);
	if(r>pivot)
	quik_sort(A,pivot+1,r);
}
int exchange(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值