快排

【问题描述】

  请用"快速排序算法”为若干个小动物的身高进行从低到高的排序。

  输入: 第一行,一个整数n ,表示有n个数据,接下来n个大小不同的数字。

  输出: 递增序列。

【样例输入】

  7

  5 3 6 2 1 7 4

【样例输出】

  1 2 3 4 5 6 7

复制代码
#include<iostream>
using namespace std;

// 数组划分
int divide(int a[], int start, int end){
    int current=a[start];
    int i=start+1; // 下一个元素位置。 
    int j=end; // 最后一个元素位置。
    // 5 3 7 4 9 1 10
    // 4 3 1 5 9 7 10
    while(i<=j){ 
        // 寻找比current大的数。 
        while(i<=j&&a[i]<=current) i++;
        // 寻找比current小的数。 
        while(i<=j&&a[j]>current) j--;
        if(i<j){
            swap(a[i],a[j]);
            i++;
            j--;
        }
    } 
    swap(a[start], a[j]); 
    return j;
} 

void quickSort(int a[], int start, int end){
    if(start>=end) return;
    int middle=divide(a, start, end);
    // 左边的数据开始排序
    quickSort(a, start, middle-1);
    quickSort(a, middle+1, end);
    return;
}

int main(){
    int a[101], n;
    cin>>n;
    for(int i=1; i<=n; i++){
        cin>>a[i];
    }
    quickSort(a, 1, n);
    for(int i=1; i<=n; i++){
        cout<<a[i]<<" ";
    }
    return 0;
} 
复制代码

 

posted @   Hi,小董先生  阅读(214)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示