数据结构-快速排序

GitHub - caoy19/Data_Structure: definition and application of classic structure, like stack, queue, tree, gragh and so on. This repo applies to some freshers and testers for 考研.

#include<stdio.h>
#include<malloc.h>
#include<iostream>
using namespace std;
/*
    快速排序十分重要,要能迅速默写出来。
*/

/// @brief Partition函数,将数组一分为二,左边小于pivot,右边大于pivot。
///        故每一次调用该函数,pivot就确定最终位置。这个函数默认最左边为pivot。
/// @param a 数组
/// @param L 最左边下标
/// @param R 最右边下标
/// @return pivot的下标
int Partition(int a[],int L,int R){
    int pivot=a[L];  //默认以第一个为pivot
    while(L<R){
        while(a[R]>=pivot && L<R) R--;
        a[L]=a[R];
        while(a[L]<=pivot && L<R) L++;
        a[R]=a[L];
    }
    a[L]=pivot; //这句不要忘了
    return L;
}

/// @brief 递归调用QuickSort函数完成快排。平均时间复杂度O(nlogn)
/// @param a 数组
/// @param L 最左边下标
/// @param R 最右边下标
void QuickSort(int a[],int L,int R){
    if(L<R){//这个判断必须不要忘了
        int index=Partition(a,L,R);//核心函数,确定一个位置
        QuickSort(a,L,index-1);//数组左边快排
        QuickSort(a,index+1,R);//数组右边快排
    } 
}
/// @brief 主函数测试用
/// @return 无返回
int main(){
    int n;
    cout<<"请输入数组长度:";
    cin>>n;
    int a[n];
    cout<<"请输入数组元素:";
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    QuickSort(a,0,n-1);
    cout<<"快速排序后结果为:";
    for(int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值