785. 快速排序

目录

链接

题目

题意 

思路

代码

图片

句子 


链接

原题链接

题目

给定你一个长度为 nn 的整数数列。

请你使用快速排序对这个数列按照从小到大进行排序。

并将排好序的数列按顺序输出。

输入格式

输入共两行,第一行包含整数 nn。

第二行包含 nn 个整数(所有整数均在 1∼1091∼109 范围内),表示整个数列。

输出格式

输出共一行,包含 nn 个整数,表示排好序的数列。

数据范围

1≤n≤1000001≤n≤100000

输入样例:

5
3 1 2 4 5

输出样例:

1 2 3 4 5

题意 

运用快速排序把一串数字排序

思路

使用两个指针,运用递归的思路来进行求解。如果左右边界相等就返回,定义两个指针i,j,分别让他们等于左边界的左边一位,右边界的右边一位(防止出现边界问题)。定义一个分界点x,让它等于一串数字中间中间的那个数,只要i小于j就一直循环,只要i指针指向的元素小于选定的边界点,就让i指针一直往右边移动,只要j指针指向的元素大于选定的边界点,就让j指针往左边移动,当两个指针停下来的时候,只要交换两个指针指向的元素,就可以让指针继续移动下去,然后递归这个数组的两个部分就好了。

代码

#include
using namespace std;
const int N=1e5+10;
int q[N];
void sort(int q[],int l,int r)
{
    if(l>=r)
    {
        return;
    }
    int i=l-1,j=r+1,x=q[(l+r)/2];
    while(ix);
        if(i>n;
    for(int i=0;i>q[i];
    }
    sort(q,0,n-1);
    for(int i=0;i

图片

785. 快速排序_第1张图片

句子 

爱什么人是不容易的,得在万军丛中杀出一条血路!最后一条狗,穿越无数龙骑的炮火,在剩下最后一滴血的时候,挥出改变战局的一爪!你要是死在半路上了,也很自然呐。不过不冲向炮火的狗不是好狗啊!《龙族Ⅰ:火之晨曦》

你可能感兴趣的:(算法竞赛,算法)