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

快排

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 33 阅读 / 583 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
思想
先选要排列的容器的第一个值作为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&lt;end)
{
    while(begin&lt;end&&*end&gt;=key)
    {
        end--;
    }
    *begin=*end;

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

}

0

评论区