快速排序

#define maxsize 3
typedef struct{
	string name;
	int Math;
	int English;
	int Chinese;
	int key;
}student;
typedef struct{
	student r[maxsize+1];
	int length;
}Sqlist;

//初始化线性表,给线性表赋值

void creatlist(Sqlist& L){
	L.length=0;
	for(int i=1;i<=maxsize;i++){
		cin>>L.r[i].name>>L.r[i].Chinese>>L.r[i].Math>>L.r[i].English;
		L.r[i].key=L.r[i].Chinese+L.r[i].Math+L.r[i].English;
		L.length++;
	}
}

//输出线性表

void show(Sqlist L){
		for(int i=1;i<=L.length;i++){
			cout<<"第"<<i<<"名为:";
			 cout<<L.r[i].name<<" "<<L.r[i].Chinese<<" "<<L.r[i].Math<<" "<<L.r[i].English<<endl;    
		}
		 cout<<endl;
} 

//每一次的快速排序

int partition(Sqlist& L,int low,int high){
	L.r[0] = L.r[low];
	int pivotkey = L.r[low].key;
	while(low<high){
		while((low<high)&&(L.r[high].key<=pivotkey))
			high--;
		L.r[low] = L.r[high];
		while((low<high)&&(L.r[low].key>=pivotkey))
			low++;	
		L.r[high] = L.r[low];
	}
	L.r[low] = L.r[0];//枢轴的位置(值) 
	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函数中调用

int main(){
	Sqlist b;
	creatlist(b);
	int low=1;
	int high=b.length; 
	//show(b);
	Qsort(b,low,high);
	show(b);
	
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值