首页 > 编程语言 > 详细

排序算法之快速排序

时间:2019-09-15 11:25:49      阅读:87      评论:0      收藏:0      [点我收藏+]

一、原理

核心原理就是划分,找一个哨兵元素(通常选第一个元素),然后根据哨兵元素将原序列所有比哨兵元素大的放哨兵后面,所有比哨兵小的放哨兵前面(升序排列,降序相反即可),那么,哨兵元素此时所在的位置就应该是排序之后它应该在的位置,也就是说哨兵的位置已经正确找到,只是他前后的序列可能还是无需的,对于前后序列用同样的方法,就能将所有元素的正确位置找到,实现序列排序。

二、算法复杂度

时间复杂度:最坏:O(n²)最好:O(nlogn)平均:O(nlogn)

空间复杂度:O(logn

三、C/C++源码实现

技术分享图片
#include<iostream>

using namespace std;

void KP(int data[],int begin,int end){
    int left=begin;
    int right = end;
    int row = data[begin];
    while(left<right){
        while(data[right]>=row&&left<right)
        right--;
        data[left]=data[right];
        while(data[left]<=row&&left<right)
        left++;
        data[right]=data[left];
    }
    data[left]=row;
    if(begin<end){
    KP(data,begin,left-1);
    KP(data,right+1,end);
    }
}

int main(){
    int data[10];
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>data[i];
    KP(data,0,n-1);
    for(int i=0;i<n;i++)
    cout<<data[i]<<" ";
    
}
View Code

 

排序算法之快速排序

原文:https://www.cnblogs.com/bucthuge/p/11521485.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!