快速排序算法

这是数据结构中比较经典排序算法:
#include <iostream>

using namespace std;

void QuickSort(char [], int, int);

int main()
{
	char cset[20];

	cout << "creating random char set!" << endl;
	for (int i = 0; i < 20; i ++) {
		cset[i] = 'A' + rand() % 26;
	}
	
	cout << "show the char set: " << endl; 
	for (int i = 0; i < 20; i++) {
		cout << cset[i] << "\t";
		if ((i+1)%5 == 0) {
			cout << '\n';
		}
	}

	QuickSort(cset, 0, 19);

	cout << "after quick sort: " << endl;
	for (int i = 0; i < 20; i++) {
		cout << cset[i] << "\t";
		if ((i+1)%5 == 0) {
			cout << '\n';
		}
	}

	return 1;
}

void QuickSort(char set[], int low, int high)
{
	int beg = 0;
	int end = 0;
	char ctmp;

	if (low < high) {						// 若数组的 头 小于 尾(即数组长度大于1)
		beg = low;
		end = high;
		ctmp = *(set + low);
	} else {								// 否则退出
		return;
	}

	while (beg < end)						// 两边向中间
	{
		while (beg < end && *(set + end) >= ctmp)
		{
			end--;
		}
		
		if (beg < end) {
			*(set + beg) = *(set + end);
			beg++;
		}
		
		while (beg < end && *(set + beg) <= ctmp)
		{
			beg++;
		}
		
		if (beg < end) {
			*(set + end) = *(set + beg);
			end--;
		}	
	}
	*(set + beg) = ctmp;
	QuickSort(set, low, beg - 1);			// 递归调用前半部分
	QuickSort(set, beg + 1, high);			// 递归调用后半部分
	return;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值