首页 > 其他分享 >排序 - 题解

排序 - 题解

时间:2024-07-29 23:31:01浏览次数:10  
标签:输出 数列 int 题解 整数 排序

排序

时间限制:C/C++ 1000MS,其他语言 2000MS
内存限制:C/C++ 64MB,其他语言 128MB

描述

给定你一个长度为 \(n\) 的整数数列。
请你使用任意排序对这个数列按照从小到大进行排序。
并将排好序的数列按顺序输出。
数据范围 \(1≤n≤100000\)
禁止使用 sort 函数

输入描述

输入共两行,第一行包含整数 \(n\)。
第二行包含 \(n\) 个整数(所有整数均在 \(0∼10^9\) 范围内),表示整个数列。

输出描述

输出格式输出共一行,包含 \(n\) 个整数,表示排好序的数列。

用例输入 1

5
3 1 2 4 5

用例输出 1

1 2 3 4 5

解析

推荐查看 https://acwing.com/solution/content/16777

代码

#include<cstdio>
#include<algorithm>
using namespace std;

const int N=1e5+5;
int n,a[N],tmp[N];

void quick_sort(int l,int r)
{
	if(l>=r) return;
	int i=l-1,j=r+1, pivot=a[(l+r)>>1];
	while(i<j)
	{
		do i++; while(a[i]<pivot);
		do j--; while(a[j]>pivot);
		if(i<j) swap(a[i],a[j]);
	}
	quick_sort(l,j), quick_sort(j+1,r);
	return;
}

int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	quick_sort(1,n);
	for(int i=1;i<=n;i++)
		printf("%d ",a[i]);
	return 0;
}

标签:输出,数列,int,题解,整数,排序
From: https://www.cnblogs.com/jerrycyx/p/18331279

相关文章

  • 逆序对的数量 - 题解
    逆序对的数量时间限制:C/C++1000MS,其他语言2000MS内存限制:C/C++64MB,其他语言128MB描述给定一个长度为\(n\)的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第\(i\)个和第\(j\)个元素,如果满足\(i<j\)且\(a[i]>a[j]\),则其为一个逆序对;否则......
  • 求第k小的数 - 题解
    求第k小的数时间限制:C/C++1500MS,其他语言3000MS内存限制:C/C++256MB,其他语言512MB描述输入\(n\)个数字,输出这些数字的第\(k\)小的数。最小的数是第\(0\)小。输入描述第一行包含两个整数\(n(1≤n≤5000000)\)和\(k(0≤k<n)\)。输出描述1个整数(所有整数均在......
  • 最大子段和 - 题解
    最大子段和时间限制:C/C++1000MS,其他语言2000MS内存限制:C/C++128MB,其他语言256MB描述给出一个长度为\(n\)的序列\(a\),选出其中连续且非空的一段使得这段和最大。输入描述第一行是一个整数,表示序列的长度\(n\)。第二行有\(n\)个整数,第\(i\)个整数表示序列的第......
  • 两种常见排序(冒泡排序和选择排序)详解
    一、冒泡排序1.1、冒泡排序的原理讲解。例如有以下7个数的无序数列储存在数组arr[7]中,现在需要用冒泡排序法来对以下序列进行排序冒泡排序是比较相邻的两个数,如果第一个数比第二个数大,这两个数就要交换两个数的位置,如果第一个数小于第二个数则不用变换位置,例如第一个数3比......
  • 数二数 题解
    我们定义\(f_i\)表示考虑\(n=i\)时的答案。考虑怎样才能使得Bob存在一种出题方案使得\(l\)与\(r\)无法确定。假设包含点\(i\)的询问集合为\(S_i\),那么当\(S_l=S_r\)时\(l\)与\(r\)无法确定。发现:如果\(a<b<c<d\),\(S_a=S_c\),\(S_b=S_d\),那么\(S_a=S_b=S_c=......
  • P8314 Parkovi 题解
    题意:树,边有边权,求一种选出\(k\)个点染色的方案,使得每个点到最近的一个被染色点的距离的最大值最小,\(n\le2\cdot10^5\).Solution先看部分分:\(n\le20\):直接\(C_n^k\)爆搜.\(k=1\):对每个点\(u\)求出\(f(u)\)和\(g(u)\)分别表示\(u\)到子树内点距离的最大值、\(u\)......
  • luogu P2371 [国家集训队] 墨墨的等式 题解
    luoguP2371[国家集训队]墨墨的等式题目传送门思路同余最短路同余最短路同余最短路与差分约束有异曲同工之妙,都将约束条件转化为边,每种状态转化为点。把本来与图论毫不相干的问题抽象到具体的图上,通过拓扑排序,最短路等基础算法获得最小状态,从而解决问题。在本题中,以\(0\)......
  • vue3中使用keepAlive缓存路由组件不生效的问题解决
    在Vue3中使用keep-alive缓存路由组件时,可能会遇到一些问题导致缓存不生效。以下是一些常见的问题及其解决方案:keep-alive写法错误:在Vue3中,使用keep-alive需要将router-view包裹在keep-alive中,并通过插槽传递组件。例如:<template><router-viewv-slot="{Co......
  • 【数据结构】排序
    1.排序的概念及其运用1.1排序的概念排序:指的是将一组数据(通常是一个列表、数组或任何有限集合)按照某种特定的顺序重新排列的过程。这个特定的顺序可以是升序(从小到大)、降序(从大到小)或者根据自定义的规则进行排序。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的......
  • Python自定义排序
    Python封装了成熟的排序函数,我们只需要调用内部的sort函数,就可以完成排序。但是实际场景当中,排序的应用往往比较复杂,比如对象类型,当中有多个字段,我们希望按照指定字段排序,或者是希望按照多关键字排序,这个时候就不能简单的函数调用来解决了。1.字典排序我们先来看下最常见的字典......