【排序】常用排序法

问题 B: 【排序】常用排序法

时间限制: 1 Sec  内存限制: 64 MB
提交: 69  解决: 41
[提交] [状态] [讨论版] [命题人:]

题目描述

为了快速地把修罗王和邪狼从混乱的队伍中找出来,典狱长准备对排队的囚犯进行从小到大的按编号排序,但是他不知道用哪一种排序方法最合适,因此他准备请教前来协助的高级魔法师张琪曼和楚继光。

输入

共两行,第一行为一个数N(N≤100000),即排队的总人数,第二行为N个数,即每个人的编号,每个编号均不超过int类型的最大值。

输出

输出排好序的数列,每个数以空格间隙。行尾有空格

样例输入

10
2 1 76 11 4 765 32 56 3 23

样例输出

1 2 3 4 11 23 32 56 76 765

分析:排序。。。

#include <iostream>
#include <string>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#define range(i,a,b) for(int i=a;i<=b;++i)
#define LL long long
#define rerange(i,a,b) for(int i=a;i>=b;--i)
#define fill(arr,tmp) memset(arr,tmp,sizeof(arr))
using namespace std;
int n;
vector<int>num;
void init(){
    cin>>n;
    num.resize(n+1);
    range(i,1,n)cin>>num[i];
    sort(num.begin()+1,num.end());
}
void solve(){
    vector<int>::iterator iter;
    for(iter=num.begin()+1;iter!=num.end();++iter)cout<<*iter<<(iter==num.end()-1?‘\n‘:‘ ‘);
}
int main() {
    init();
    solve();
    return 0;
}

原文地址:https://www.cnblogs.com/Rhythm-/p/9348136.html

时间: 2024-08-06 13:42:04

【排序】常用排序法的相关文章

Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2]

C++常用排序法、随机数

C++常用排序法研究 2008-12-25 14:38 首先介绍一个计算时间差的函数,它在<time.h>头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了. 函数开头加上 clock_t start = clock(); 函数结尾加上 clock_t end = clock(); 于是时间差为: end - start 不过这不精确的 多次运行时间是不同的 和CPU 进程有关吧 (先总结一下:以下算法以时间和空间以及编码难度,以及实用性方面来看,快速排序法是最优秀的!推荐!

几种常用排序算法(bubble、select、insert、shell、未完待续)

接下来两天重新看看几种常用的排序算法. 1.冒泡排序法 每次从 i=0开始比较相邻的元素,若arr[i]>arr[i+1],则交换它们.直到把最大的元素推向最后.回到 i=0,直至完成. 1 import java.util.Scanner; 2 class bubble 3 { 4 public static void main(String[] args) 5 { 6 int n,temp; 7 int i,j; 8 int[] arr=new int[10000]; 9 Scanner s

常用排序算法小结

1 #include <stdio.h> 2 #include <stdlib.h> 3 4 5 //the basic bubble sort 6 void maopao1(int *num,int len) 7 { 8 int i,j; 9 int temp; 10 for (i = 0; i < len-1; ++i) 11 { 12 for (j = i+1; j<len; ++j) 13 { 14 if (num[i]>num[j]) 15 { 16 t

排序常用算法总结

排序算法:一种能将一串数据依照特定的排序方式进行排列的一种算法. 排序算法性能:取决于时间和空间复杂度,其次还得考虑稳定性,及其适应的场景. 稳定性:让原本有相等键值的记录维持相对次序.也就是若一个排序算法是稳定的,当有俩个相等键值的记录R和S,且原本的序列中R在S前,那么排序后的列表中R应该也在S之前. 以下来总结常用的排序算法,加深对排序的理解. 排序算法目录 冒泡排序 插入排序 希尔排序 选择排序 快速排序 归并排序 堆排序 计数排序 桶排序 基数排序 总结 冒泡排序 原理 俩俩比较相邻记

常用排序算法实现[交换排序之冒泡排序、快速排序]

相关知识 1. 稳定排序和非稳定排序: 稳定排序算法会依照相等的关键(换言之就是值)维持纪录的相对次序. 如果排序算法是稳定的,就是当有两个有相等关键的纪录R和S,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前. 2. 内排序和外排序 在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序: 在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序. 3.算法分类 排序算法从理论上分为如下几类: (1) 交换排序法:

常用排序算法的python实现和性能分析

http://www.cnblogs.com/wiki-royzhang/p/3614694.html 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试题整了一下,可以阶段性的留下些脚印——没办法,平时太忙,基本上没有时间写博客.面试测试开发的话,这些也许能帮得上一些. 这篇是关于排序的,把常见的排序算法和面试中经常提到的一些问题整理了一下.这里面大概有3个需要提到的问题: 虽然专业是数

C++常用排序算法

排序算法是一种基本并且常用的算法.由于实际工作中处理的数量巨大,所以排序算法对算法本身的速度要求很高.而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示.在后面我将给出详细的说明.  简单排序算法,后面你将看到他们的共同点是算法复杂度为O(N*N): 1.冒泡排序: #include <iostream.h> void BubbleSort(int* pData,int Count) { int iTemp; for(int i=1;i<Count;i++) { for(

Java 常用排序算法/程序员必须掌握的 8大排序算法

Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空间最少:堆排序 平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序. 先来看看 8种排序之间的关系: 1.直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n 个数插到前