UVA 10474 Where is the Marble?【vector的sort用法】

本文介绍了一种利用排序和二分查找解决特定查询问题的方法。通过实例代码讲解了如何使用C++的vector容器进行排序,并实现二分查找来确定查询元素的位置。

Source

点击打开链接


题意:给出两个数n和q,下面输入n个数,再依次输入q个询问,分别查找q个数在n个数中是第几大,

思路:很简单,排序加二分查找,主要目的在于熟悉一下vector的sort用法:


sort(vect.begin(), vect.end());
sort(vect.begin(), vect.end(), less<int>() );
第三个参数可以自定义,主要用于自定义类型的排序

注:

1、迭代器的函数

    begin()   

         返回一个迭代器,指向第一个元素   

     end()

         返回一个迭代器,指向最后一个元素的后一个       

2、sort的参数是针对半开区间的[begin,end)


代码:

#include<stdio.h>
#include<algorithm>
#include<vector>
using namespace std;

vector<int> v;

int binary_find(int x)
{
    int len=v.size();
    int l=0,r=len-1;
    while(l<=r)
    {
        int mid=(l+r)/2;
        if(v[mid]==x)
        {
            while(v[mid-1]==v[mid]) mid--;
            return mid+1;
        }
        else if(v[mid]<x) l=mid+1;
        else r=mid-1;
    }
    return 0;
}

int main()
{
    int n,q,x,ans,k=1;
    while(scanf("%d %d",&n,&q)==2 && (n!=0 || q!=0))
    {
        v.clear();
        for(int i=0;i<n;i++)
        {
            scanf("%d",&x);
            v.push_back(x);
        }
        sort(v.begin(),v.end());
        printf("CASE# %d:\n",k++);
        for(int i=0;i<q;i++)
        {
            scanf("%d",&x);
            ans=binary_find(x);
            if(ans) printf("%d found at %d\n",x,ans);
            else printf("%d not found\n",x);
        }
    }
    return 0;
}



内容概要:本文系统阐述了Python在数据分析与可视化领域的技术实践,涵盖数据分析基础、数据探索方法、可视化技术原理、高级可视化应用及实战案例五大方面。文章首先介绍NumPy和Pandas在数据处理与描述性统计中的核心作用,继而讲解相关性分析、分布分析和分组对比等探索性分析方法。随后深入剖析Matplotlib、Seaborn和Plotly三大可视化库的技术特点与应用场景,涵盖静态图表、统计图形到交互式可视化。最后通过交通数据的实战案例,演示从数据预处理、探索分析到多维度可视化呈现的完整流程。; 适合人群:具备Python基础、对数据处理与可视化感兴趣的初中级开发者,以及从事数据分析、运营分析、数据科学研究等相关工作的人员;尤其适合工作1-3年、希望提升数据实战能力的研发人员。; 使用场景及目标:①掌握Pandas进行数据清洗、分组聚合与描述性统计的方法;②熟练运用Matplotlib、Seaborn和Plotly实现多样化数据可视化;③通过真实案例理解探索性数据分析流程并构建交互式仪表盘;④应用于业务报表开发、数据洞察挖掘和决策支持系统建设。; 阅读建议:建议结合代码实践同步学习,重点理解不同可视化工具的适用边界,并在实战中尝试迁移应用文中案例逻辑,强化对数据分布识别、多维分析和交互设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值