不得不说,手写的快排真的好菜。(即使开了随机数...)


快速排序

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
inline int read();
 ;
namespace iNx{
    int n;
    int q[Maxn];
    void exchange(int a,int b){
        int t=q[a];
        q[a]=q[b];
        q[b]=t;
    }
    void quicksort(int left,int right){
        if(left>=right) return ;
        exchange(left,(rand()%(right-left+))+left);
        int key=q[left],i=left,j=right;
        while(i<j){
            while(q[j]>=key&&i<j) j--;
            if(j>i) q[i++]=q[j];
            while(q[i]<=key&&i<j) i++;
            if(i<j) q[j--]=q[i];
        }
        q[i]=key;
        quicksort(left,i-);
        quicksort(i+,right);
    }
    int main(){
        n=read();
        int i;
        ;i<=n;i++) q[i]=read();
        quicksort(,n);
        ;i<=n;i++) printf("%d ",q[i]);
        puts("");
        ;
    }
}
int main(){
    iNx::main();
    ;
}
inline int read(){
    ,ff=;
    char c=getchar();
    '){
        ;
        c=getchar();
    }
    +c-',c=getchar();
    return kk*ff;
}

归并排序

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
inline int read();

 ;
namespace iNx{
    int n,q[Maxn],t[Maxn];
    void mergesort(int left,int right){
        if(left>=right) return ;
        ;
        mergesort(left,mid);
        mergesort(mid+,right);
        ,k=left;
        while(i<=mid&&j<=right){
            if(q[i]<=q[j]) t[k++]=q[i++];
            else t[k++]=q[j++];
        }
        while(i<=mid) t[k++]=q[i++];
        while(j<=right) t[k++]=q[j++];
        for(i=left;i<=right;i++) q[i]=t[i];
    }
    int main(){
        n=read();
        int i;
        ;i<=n;i++) q[i]=read();
        mergesort(,n);
        ;i<=n;i++) printf("%d ",q[i]);
        puts("");
    }
}
int main(){
    iNx::main();
    ;
}
inline int read(){
    ,ff=;
    char c=getchar();
    '){
        ;
        c=getchar();
    }
    +c-',c=getchar();
    return kk*ff;
}

可以到洛谷上测试:P1177 【模板】快速排序

附上两种代码测评结果(此题时间限制3s):

快速排序:

归并排序:

(天天进步一点点hhh。)

[模板][快速排序&归并排序]的更多相关文章

  1. Luogu 1177 - 【模板】快速排序 - [快速排序][归并排序][无旋Treap]

    题目链接:https://www.luogu.org/problemnew/show/P1177 题意:输入 $n$ 以及后续 $n$ 个整数,让你将这 $n$ 个整数从小到大排序输出. 归并排序(用 ...

  2. 快速排序&&归并排序

    快速排序 快速排序采用的是分治的策略,算法的具体实现过程是 1.确定一个数X(一般是选中间值X=q[l+r>>1]) 2.利用指针i,j,将数组中比X小的数放在一边,比X大的数放在另一边 ...

  3. c语言 快速排序---归并排序----堆排序

    //快速排序: #include <stdio.h> #define MAX 500000 int s[MAX]; void Q_Sort(int start,int end) { int ...

  4. noi.ac #32 快速排序归并排序应用

    \(des\) 给定长度为 \(n\) 的数组,要求翻转一段区间 \([l, r]\) 使其升序排列. 要求 \(\sum r - l + 1 <= 2e7\) \(sol\) 考虑快速排序,每 ...

  5. 9, java数据结构和算法: 直接插入排序, 希尔排序, 简单选择排序, 堆排序, 冒泡排序,快速排序, 归并排序, 基数排序的分析和代码实现

    内部排序: 就是使用内存空间来排序 外部排序: 就是数据量很大,需要借助外部存储(文件)来排序. 直接上代码: package com.lvcai; public class Sort { publi ...

  6. 洛谷【P1177】【模板】归并排序

    题目传送门:https://www.luogu.org/problemnew/show/P1177 归并排序: 1.先将\(a\)数组的区间\([l,mid],[mid+1,r]\)排成有序的. 2. ...

  7. 快速排序 O(n logn) 堆排序 O(n logn) 归并排序 O(n logn)

    NB三人组 快速排序 思路" 取一个元素P (第一个元素), 使元素归位 列表被P 分成两部分,左边都比P小,右边比P大; 递归完成排序. 问题 如果是已经排序好的 倒叙 列表 则会 递归深 ...

  8. 快速排序 Vs. 归并排序 Vs. 堆排序——谁才是最强的排序算法

    知乎上有一个问题是这样的: 堆排序是渐进最优的比较排序算法,达到了O(nlgn)这一下界,而快排有一定的可能性会产生最坏划分,时间复杂度可能为O(n^2),那为什么快排在实际使用中通常优于堆排序? 昨 ...

  9. 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较

    2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...

随机推荐

  1. 简述Vue中使用Vuex

    1.为什么要用vuex 在vue组件通信的过程中,我们通信的目的往往就是在组件之间传递数据或组件的状态(这里将数据和状态统称为状态),进而更改状态.但可以看到如果我们通过最基本的方式来进行通信,一旦需 ...

  2. 第七周课程总结&实验报考(五)

    第七周课程总结&实验报考(五) 实验四 类的继承 实验目的: 1.理解抽象类与接口的使用: 2.了解包的作用,掌握包的设计方法. 实验要求: 1.掌握使用抽象类的方法. 2.掌握使用系统接口的 ...

  3. Solrcloud+tomcat+zookeeper

    准备两台服务器,目录结构如下 主机名 IP地址 tomcat安装路径 zookeeper安装路径 solr安装路径 java安装路径 sht-sgmhadoopnn-01 172.16.101.55 ...

  4. django 商城项目之购物车以及python中的一些redis命令

    最近在用django restframe框架做一个商城项目,有一个关于购物车的业务逻辑,是用cookie和redis存储的购物车信息,在这里记录一下. 完成一个商城项目,如果不做一个购物车,就是十分可 ...

  5. ELK-6.5.3学习笔记–elk基础环境安装

    本文预计阅读时间 13 分钟 文章目录[隐藏] 1,准备工作. 2,安装elasticsearch. 3,安装logstash. 4,安装kibana 以往都是纸上谈兵,毕竟事情也都由部门其他小伙伴承 ...

  6. [.net core]6.launchSettings.json,调试配置

    展开properties, 双击查看内容, { "iisSettings": { "windowsAuthentication": false, "a ...

  7. python全栈开发教程目录

    python入门到进阶 Python基础2——数据类型的操作 Python基础——函数入门 Python基础——函数进阶 Python基础——函数的装饰器 Python基础——函数的装饰器 Pytho ...

  8. 面向新手的Web服务器搭建(一)——IIS的搭建

    很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题.看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器 ...

  9. Delphi 帮助的使用

  10. [转载]MII/MDIO接口详解

    原文地址:MII/MDIO接口详解作者:心田麦浪 本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在 ...