快速排序

本文介绍了一个使用C语言实现的快速排序算法。通过定义特定的数据结构和类型,该程序能够对一组整数进行排序。主要实现了分区函数和快速排序递归函数,并在主函数中进行了测试。
# include <stdio.h>
# define MAXSIZE 20
typedef int KeyType;

typedef struct {
	KeyType key; 
//	InfoType otherinfo;
}RedType;

typedef struct{
	RedType r[MAXSIZE+1];
	int length ;	
}SqList; 


void swap(int &a,int &b){
	int m;
	m=a;
	a=b;
	b=m;
	
}

int partition( SqList &L,int low ,int high){
		int pivotkey=L.r[low].key;
	while(low<high){
		while(low<high&&L.r[high].key>=pivotkey)high--;
			swap(L.r[low].key,L.r[high].key );
		while(low<high&&L.r[low].key<=pivotkey)low++;
			swap(L.r[low].key,L.r[high].key );
	}
	return low;			
}
		
void Qsort(SqList &L,int low,int high){
	if(low<high){
	int pivotloc=partition(L, low , high);
	Qsort(L,low,pivotloc-1);
	Qsort(L,pivotloc+1,high);
	}
}

main (){
	SqList L;
	L.r[1].key=5;
	L.r[2].key=3;
	L.r[3].key=8;
	L.r[4].key=6;
	L.r[5].key=1;
	L.r[6].key=2;
	L.r[7].key=4;
	L.r[8].key=7;
	L.r[9].key=10;
	L.r[10].key=9;
	L.length=10;
	Qsort(L,1,10);
	for(int i=1;i<L.length;i++)
		printf("  %d ",L.r[i].key);			
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值