算法中分治策略实现快速排序

本文详细介绍了快速排序算法的基本原理,包括其分治策略的核心思想,并通过具体的C++代码实现了该算法。快速排序通过选取基准元素并将数组划分为三个部分来完成排序。

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

快速排序算法是基于分治策略的一个排序算法,其基本思想是,对于输入的子数组,按以下三个步骤求解:

1 分解:选择一个基准元素,将整个数组分为大于基准元素,等于基准元素,小于基准元素的三组。基准元素在在划分的过程中确定

2 递归求解:通过递归调用快速排序算法分别对大于和小于基准元素的数组进行排序

3 合并:将递归的子数组进行合并最后成为排好序的数组

下面是程序的代码:

#include<iostream>
using namespace std;
int Partition(int a[],int p ,int r)
{

int i = p,j=r+1,sub;

int x = a[p];

//将<x的元素交换到左边区域

//将>x的元素交换到右边区域

while(true)

{

while(a[++i]<x&&j<r);

while(a[--j]>x);

if(i>=j) break;

sub = a[i];

a[i] = a[j];

a[j] =sub;

}

a[p] = a[j];

a[j] =x;

return j;

}

void QuickSort(int a[],int p,int r)

{

if(p<r)

{

int q = Partition(a,p,r);

QuickSort(a,p,q-1);//对左半段排序

QuickSort(a,q+1,r);//对右半段排序

}

}

int main()

{

int aa[4]={2,3,1,5};

QuickSort(aa,0,3);

for(int i= 0; i<4;i++)

cout<<aa[i]<<" ";

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值