小程序(2)——随机快速排序

本文详细介绍了C++中快速排序算法的实现过程,包括单轮排序和递归排序两个关键步骤,通过随机选择基准元素并进行分区操作,实现数组的高效排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ifndef __QUIKSORT_H
#define __QUIKSORT_H

#include<stdlib.h>

typedef  int T;

int One_Round_Sort(T* arr, int low, int high)
{
	if( (arr == NULL) || (low > high) )
		return -1;

	int r = rand() % (high - low + 1) + low;

	T key = arr[r];
	arr[r] = arr[low];
	arr[low] = key;

	//
	int small = low;
	for( int idx = low + 1; idx <= high; ++idx)
	{
		if(arr[idx] < key)
		{
			++small;
			if(small != idx)
			{
				//swap
				T tmp = arr[idx];
				arr[idx] = arr[small];
				arr[small] = tmp;
			}
		}
	}

	arr[low]  = arr[small];
	arr[small] = key;
	//
	return small;
}

void Quik_Sort(T* arr, int low, int high)
{
	if( (arr == NULL) || (low < 0) || (low >= high) )
		return ;

	int mid = One_Round_Sort(arr, low, high);
	Quik_Sort(arr, low, mid - 1);
	Quik_Sort(arr, mid + 1, high);
}

#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值