首页 > 其他分享 >考研数据结构——每日一题[快速排序]

考研数据结构——每日一题[快速排序]

时间:2023-08-17 10:07:03浏览次数:37  
标签:排序 数列 int ++ 整数 include 数据结构 考研

785. 快速排序

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

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

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

输入格式 输入共两行,第一行包含整数 n。

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

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

数据范围 1≤n≤100000 输入样例: 5 3 1 2 4 5 输出样例: 1 2 3 4 5

记讲义的复杂度[最优,平均,最差](不需要会推导)
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 1000010; //开越大桶排序过越多样例

int n;
int q[N];

void insert_sort()  //直接插入排序  [一个一个插入,插入到前面,要把数组整体后移] 
{
	for(int i = 1;i < n; i++)//把每个数插入到排序位置上 
	{//q[i]存t   【形象类比: 斗地主整理牌】 
		int t = q[i] , j = i;//加入新的元素q[i],遍历前i个元素,把q[i]排序到对应位置上 
		while(j && q[j - 1] > t)  //j从i开始从已经确定的尾部开始往前遍历: 所以第一个用j- 1, 找到第一个 
		{
			q[j] = q[j - 1];
			j --;	
		} 
		q[j] = t;	
	}	
}
int main()
{
	for(int i = 0;i < 10 ;i ++) scanf("%d ",&q[i]);
	//merge_sort(q,0,9); 
	insert_sort();
	
	for(int i = 0;i < 10 ;i ++) printf("%d ",q[i]);
	
	return 0;
}

标签:排序,数列,int,++,整数,include,数据结构,考研
From: https://blog.51cto.com/u_15623277/7118246

相关文章

  • hive排序函数 rank、dense_rank、row_number
    rank函数:对有序序列编号,当排序字段取值相同时编号相同,且下一条取值不同记录的编号不连续。如序列为:13,13,13,13,13,14,…对应的排序编号为1,1,1,1,1,6,…dense_rank函数:对有序序列编号,当排序字段相同时编号相同,且下一条记录的编号仍连续。如序列为:13,13,13,13,13,14,…对应的排序......
  • 拓扑排序算法笔记
    思想拓扑,一看就是从图的开始开始开拓,并按被开拓到的顺序排序拓扑排序的思想如下:将入度为\(0\)的点删除,并记录它被删除的顺序,直到没有点则结束程序代码也十分简单:#include<bits/stdc++.h>usingnamespacestd;boolb[100001];intfat[100001];vector<int>v[100001];i......
  • 8016: 重新排序 差分
    描述 给定一个数组 A 和一些查询 Li,Ri,求数组中第 Li 至第 Ri 个元素之和。小蓝觉得这个问题很无聊,于是他想重新排列一下数组,使得最终每个查询结果的和尽可能地大。小蓝想知道相比原数组,所有查询结果的总和最多可以增加多少?  输入 输入第一行包含一个整数......
  • 4877: 火柴排队 归并排序
    描述  涵涵有两盒火柴,每盒装有n根火柴,每根火柴都有一个高度。现在将每盒中的火柴各自排成一列,同一列火柴的高度互不相同,两列火柴之间的距离定义为:Σ(ai-bi)^2,i=1~n,其中ai表示第一列火柴中第i个火柴的高度,bi表示第二列火柴中第i个火柴的高度。每列火柴中相邻两根火柴的......
  • Python 实现排序算法
    常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。冒泡排序冒泡排序(BubbleSort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复......
  • 4866: 瑞士轮 归并排序
    描述  2*N名编号为1~2N的选手共进行R轮比赛。每轮比赛开始前,以及所有比赛结束后,都会按照总分从高到低对选手进行一次排名。选手的总分为第一轮开始前的初始分数加上已参加过的所有比赛的得分和。总分相同的,约定编号较小的选手排名靠前。每轮比赛的对阵安排与该轮比赛开始前......
  • 5708: 逆序对 归并排序
    描述  给定 一个序列,求其逆序对的总数。所谓逆序对是指:序列a中存在两个元素a[i]和a[j],满足 i<j 且a[i]>a[j],则a[i]和a[j]为一个逆序对。  输入  第一行为正整数n(n<=100000)。第二行有n个正整数,最大不超过1000000。  输出  输出逆序对的总数。......
  • Java中List排序的4种方法
    在开发ERP或电商系统中,经常会遇到内容加密,生成签名,展示页面列表等功能场景,这个时候我们需要在Java程序中对List集合进行排序操作。排序的常见方法有以下4种:使用Comparable进行排序;使用Comparator进行排序;JDK8以上的环境,可以使用Stream流进行排排序;JD......
  • 冒泡排序
    冒泡排序-时间复杂度为O(n2)publicclassDemo{publicstaticvoidmain(String[]args){int[]a={3,23,12,3,423,22,4,534,66,34};System.out.println(Arrays.toString(sort(a)));}//冒泡排序//1比较数组中,两个相邻的元素,如......
  • 计数排序(Python)
    defcounting(data):"data里的value作为计数数组counts的index,然后把counts的value转换成data的index"#计数列表,存储每个值有多少个,以data的值作为索引,所以数组长度以最大值+1为准counts=[0foriinrange(max(data)+1)]#同时给数组赋初值0,等会逐个计数......