侧边栏壁纸
  • 累计撰写 793 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

目 录CONTENT

文章目录

快排

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 103 阅读 / 155 字
温馨提示:
本文最后更新于 2022-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
思想
先选要排列的容器的第一个值作为key,然后把比key小的放在左边,打的放在右边,然后分别递归左半和右半。

#include<iostream>
#include<string.h>
using namespace std;

char s[100000];
void sort(char* begin,char* end);

int main()
{
    while(cin.getline(s,100000))
    {
        sort(s,s+strlen(s)-1);
        cout<<s<<endl;
    }
}

void sort(char* begin,char* end)
{
    if(begin>=end) return;

    char* head=begin;
    char* tear=end;
    char key=begin[0];

    while(begin<end)
    {
        while(begin<end&&*end>=key)
        {
            end--;
        }
        *begin=*end;

        while(begin<end&&*begin<=key)
        {
            begin++;
        }
        *end =*begin ;
    }
    begin[0]=key;
    sort(head,begin-1);
    sort(end+1,tear);
}
0

评论区