首页 > 其他分享 >蓝桥杯省赛 研究生组 双向排序

蓝桥杯省赛 研究生组 双向排序

时间:2022-10-14 11:58:34浏览次数:45  
标签:sort do idx int 蓝桥 while quick 省赛 排序

过60%数据

#include<iostream>
using namespace std;
void quick_sort_down(int q[],int l,int r) {
    if (l >= r) {
        return;
    }
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j) {
        do i++; while (q[i] > x);
        do j--; while (q[j] < x);
        if (i < j) {
            swap(q[i], q[j]);
        }
    }
    quick_sort_down(q, l, j);
    quick_sort_down(q, j + 1, r);
}
void quick_sort_up(int q[],int l,int r) {
    if (l >= r) {
        return;
    }
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j) {
        do i++; while (q[i] < x);
        do j--; while (q[j] > x);
        if (i < j) {
            swap(q[i], q[j]);
        }
    }
    quick_sort_up(q, l, j);
    quick_sort_up(q, j + 1, r);
}
int main(){
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++){
        a[i]=i+1;
    }
    for(int i=0;i<m;i++){
        int op,idx;
        cin>>op>>idx;
        if(op==0){
            quick_sort_down(a,0,idx-1);
        }
        else quick_sort_up(a,idx-1,n-1);
    }
    for(int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

全过

#include<iostream>
#include<deque>
using namespace std;
void quick_sort_down(int q[],int l,int r) {
    if (l >= r) {
        return;
    }
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j) {
        do i++; while (q[i] > x);
        do j--; while (q[j] < x);
        if (i < j) {
            swap(q[i], q[j]);
        }
    }
    quick_sort_down(q, l, j);
    quick_sort_down(q, j + 1, r);
}
void quick_sort_up(int q[],int l,int r) {
    if (l >= r) {
        return;
    }
    int i = l - 1, j = r + 1, x = q[l + r >> 1];
    while (i < j) {
        do i++; while (q[i] < x);
        do j--; while (q[j] > x);
        if (i < j) {
            swap(q[i], q[j]);
        }
    }
    quick_sort_up(q, l, j);
    quick_sort_up(q, j + 1, r);
}
int main(){
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++){
        a[i]=i+1;
    }
    deque<pair<int,int>> q;
    int op,idx;
    cin>>op>>idx;
    q.push_back({op,idx});
    for(int i=1;i<m;i++){
        int op,idx;
        cin>>op>>idx;
        if(op==q.back().first&&idx==q.back().second){
            continue;
        }
        else q.push_back({op,idx});
    }
    for(int i=0;i<q.size();i++){
        if(q[i].first==1){
            quick_sort_up(a,q[i].second-1,n-1);
        }
        else{
            quick_sort_down(a,0,q[i].second-1);
        }
    }
    for(int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

标签:sort,do,idx,int,蓝桥,while,quick,省赛,排序
From: https://www.cnblogs.com/wyf-fighting/p/16791150.html

相关文章

  • 83. 删除排序链表中的重复元素
    题目描述给定一个已排序的链表的头head,删除所有重复的元素,使每个元素只出现一次。返回已排序的链表。示例代码varremoveDuplicates=function(nums){if(n......
  • 插入排序
    插入排序的原理:将指针指向某元素(一般从第二个元素开始),假设该元素的左侧全部有序,将该元素抽取,然后按照从右往左的顺序分别与其左边的元素进行比较,遇到较大的元素便将较大的......
  • 选择排序,选择排序是对冒泡排序的改进,对数据量较大的排序效率会有很大提升
    选择排序的原理:从第一个元素开始,分别于后面的元素相比较,遇到最小值就交换位置,第一轮结束;从第二个元素开始,分别与后面的元素相比较,找到倒数第二小的元素,并交换位置,重复上述......
  • elasticsearch聚合查询之排序
    排序默认只能按两个字段排序:_count和_key 如果想按二次聚合结果中的字段排序语法如下: GEThow2java/product/_search//求每个地方商品数量,并按平均价格从高往低排......
  • Java数组06(冒泡排序)
    冒泡的代码两层循环,外层冒泡轮数,里层依次比较比较数组中,两个相邻的元素,如果的一个数比第二个数大,我们就交换他们的位置每一次比较,都会产生出一个最大,或者最小的数......
  • python使用xml.dom.minidom写xml节点属性会自动排序问题解决
    1.背景及问题一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:<stringtypename="time_type"length......
  • 【算法】时间频度与时间复杂度、归并排序、StringBuffer和StringBuilder详解!
    算法中的时间频度与时间复杂度时间频度一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度......
  • 选择排序
    选择排序代码importjava.util.Arrays;publicclassSelectionSort{publicstaticvoidmain(String[]args){int[]numbers={3,1,4,2,6,5};......
  • 769. 最多能完成排序的块
    解题思路:首先明确一个观念,排好序的arr中arr[i]=i;而如果出现了位置arr[i]≠i,则说明至少i位置到arr[i]位置都是无序的;而如果从i位置到arr[i]位置中有比arr[i]......
  • 排序和过滤源码分析,RBAC的介绍和使用,后台管理simplui的介绍和使用
    1.排序和过滤源码分析#继承了GenericAPIView+ListModelMixin,只要在视图类中配置filter_backends它就能实现过滤和排序-drf内置的过滤类(SearchFilter),排序类(Ordering......