c++之快速排序

各类排序算法的时间复杂度和空间复杂度的比较表

在这里插入图片描述

代码展示

#include<iostream> 

usingnamespace	std; 

intPartition (int*L,intlow,int high) 
{ 
	inttemp = L[low]; 
	intpt = L[low]; 
	
	while (low < high) 
	{ 
		while (low < high && L[high] >= pt) 
			--high; 
		L[low] = L[high]; 
		while (low < high && L[low] <= pt) 
			++low; 
		L[low] = temp; 
	} 
	L[low] = temp; 
	
	returnlow; 
} 

voidQSort (int*L,intlow,int high) 
{ 
	if (low < high) 
	{ 
		intpl = Partition (L,low,high); 
		
		QSort (L,low,pl - 1); 
		QSort (L,pl + 1,high); 
	} 
} 

int main () 
{ 
	intnarry[100],addr[100]; 
	intsum = 1,t; 
	
	cout << "Input number:" << endl; 
	cin >> t; 

	while (t != -1) 
	{ 
		narry[sum] = t; 
		addr[sum - 1] = t; 
		sum++; 
		
		cin >> t; 
	} 
		
	sum -= 1; 
	QSort (narry,1,sum); 
	
	for (int i = 1; i <= sum;i++) 
	cout << narry[i] << '\t'; 
	cout << endl; 
	
	intk; 
	cout << "Please input place you want:" << endl; 
	cin >> k; 
	
	intaa = 1; 
	intkk = 0; 
	for (;;) 
	{ 
		if (aa == k) 
		break; 
		if (narry[kk] != narry[kk + 1]) 
		{ 
			aa += 1; 
			kk++; 
		} 

	} 

	cout << "The NO." << k << "number is:" << narry[sum - kk] << endl; 
	cout << "And it's place is:" ; 
	for (i = 0;i < sum;i++) 
	{ 
		if (addr[i] == narry[sum - kk]) 
			cout << i << '\t'; 
	} 


	return 0; 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路过的小熊~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值