快速排序算法

一.简介

 

二.C语言版本

复制代码
//C语言版本
void sort(int* a,int left,int right){
    

    if(left>=right){
        return;
    }

    int i=left;
    int j=right;
    int key=a[left];

    while(i<j){
        while(i<j && key<=a[j]){
            j--;
        }
        a[i]=a[j];
    
        while(i<j && key>=a[i]){
            i++;
        }
        a[j]=a[i];
    }

    a[i]=key;
    sort(a,left,i-1);
    sort(a,i+1,right);
}
复制代码

 

二.C++版本

复制代码
//C++版本

#include <iostream>

using namespace std;

void Qsort(int arr[],int low,int high){
    
    if(high<=low)
        return;

    int i=low;
    int j=high+1;
    int key=arr[low];

    while(true){
        
        //从左向右找比key大的值
        while(arr[++i]<key){
            if(i==high){
                break;
            }
        }

        //从右向左找比key小的值
        while(arr[--j]>key){
            if(j==low){
                break;
            }
        }

        if(i>=j)
            break;

        int temp=arr[i];
        arr[i]=arr[j];
        arr[j]=temp;
    }

    int temp=arr[low];
    arr[low]=arr[j];
    arr[j]=temp;
    Qsort(arr,low,j-1);
    Qsort(arr,j+1,high);
}

int main(){
    int a[]={57,68,59,52,72,28,96,33,24};
    Qsort(a,0,sizeof(a)/sizeof(a[0])-1);
    
    for(int i=0;i<sizeof(a)/sizeof(a[0]);i++){
        cout<<a[i]<<"";
    }
    
    return 0;
}
复制代码

 

posted @   言午丶  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示