首页 > 编程语言 >【Cpp 基础】泛型算法 stable_sort() 的应用

【Cpp 基础】泛型算法 stable_sort() 的应用

时间:2023-12-09 20:33:26浏览次数:43  
标签:sort begin partial stable 泛型 end 排序

最近在刷牛客的题。经常遇到排序问题,经常有一个附加的规则:相同的数值的,按照录入的顺序排序。

可是C++的sort()的底层是快速排序,并不能保证相同数值的顺序不改变。所以最后我不得不自己写冒泡排序。(冒泡排序不改变相同数值的录入顺序)

写了那么多的排序,但是其实C++里封装有排序函数,而且功能非常强大。

sort函数有sort(),stable_sort()和partial_sort()。sort()函数是对给定区间的元素进行排序,但是会改变值相同的元素的相对位置。stable_sort()是对给定区间的元素进行稳定排序,如果两个元素相等,那么排序完成后两个元素的相对位置保持不变,partial_sort()是对给定区间的元素进行部分排序。默认的顺序是由小到大进行排序。

三种函数的用法如下

v为容器

sort(v.begin(),v.begin()+4,comp);
sort(v.begin(),v.end(),comp);
stable_sort(v.begin(),v.end(),comp)

stable_sort的用法与sort类似

partial_sort(v.begin(),v.begin()+4,v.end());
partial_sort(v.begin(),v.begin()+4,v.end(),comp);

 

因此,以后可以用 stable_sort()解决这类问题

标签:sort,begin,partial,stable,泛型,end,排序
From: https://www.cnblogs.com/FBsharl/p/17891442.html

相关文章

  • linux的sort排序功能
    环境centos7.9sort介绍Linux中的sort功能是一个非常实用的工具,它可以对文本文件进行排序。sort命令可以根据用户指定的规则对文本文件中的行进行排序,并将结果输出到标准输出或指定的文件中简单使用语法sort[选项][文件名]其中,选项可以是以下之一:-r:逆序排序(默认为升序)-n......
  • 详解十大经典排序算法(六):快速排序(QuickSort)
    算法原理分区(Partition):选择一个基准元素,将数组分为两个子数组,小于基准的放在左边,大于基2准的放在右边。递归排序:对左右两个子数组分别进行快速排序。合并:不需要实际的合并操作,因为在分解和递归排序阶段已经完成了排序。算法描述快速排序是一种基于分治思想的高效排序算法,由英国......
  • mergeSort
    本篇介绍cudasamples中的mergeSort.大体上来讲,mergeSort分为两个阶段.对含有SHARED_SIZE_LIMIT(即1024)个元素的数组进行排序.合并多个有序数组.其中第一个阶段调用一次函数mergeSortShared结束.而第二个阶段需要循环调用三个函数:generateSampleRanks,merg......
  • react antd table react-sortable-hoc DraggableBodyRow 拖拽及禁用指定行拖拽
    原文地址:基于antd树形表格table的拖拽排序效果实现-掘金(juejin.cn)思路片段:constDraggableBodyRow:React.FC<any>=({className,style,...restProps})=>{constindex=customInfoList.findIndex(({order:_index})=>_index===restProps['data-r......
  • 【EMNLP 2023】面向Stable Diffusion的自动Prompt工程算法BeautifulPrompt
    近日,阿里云人工智能平台PAI与华南理工大学朱金辉教授团队合作在自然语言处理顶级会议EMNLP2023上发表了BeautifulPrompt的深度生成模型,可以从简单的图片描述中生成高质量的提示词,从而使文生图模型能够生成更美观的图像。BeautifulPrompt通过对低质量和高质量的提示进行微调,并进一步......
  • Golang 泛型及代码示例
    以下是一个包含Golang泛型代码示例的文件:packagemainimport("fmt""sort")//泛型函数funcAdd[Tany](x,yT)T{returnx+y}funcmain(){//将两个整数相加fmt.Println(Add(1,2))//3//将两个字符串相加fmt.Println(Add(......
  • CF1809D Binary String Sorting 题解
    题意:思路:贪心:单调不降的$01$字符串,一定是一串连续的$0$再加上一串连续的$1$。由于每次操作的代价很大,所以需要在操作次数尽可能少的情况下,尽可能多地使用交换操作。由于$1$次交换操作,只能减少$1$个逆序对,当存在多个逆序对时,优先通过删除操作减少逆序对的......
  • three.js 使用 sortObjects 和 renderOrder 处理网格修改后覆盖模型的问题
    问题效果:目标效果处理此问题首先需要了解three的渲染机制:渲染机制threejs的渲染器是基于webGL的。它的渲染机制是根据物体离照相机的距离来控制和进行渲染的。也就是说,它根据物体的空间位置进行排序,然后根据这个顺序来渲染物体。对于透明的物体,是按照从最远到最近的顺序进行......
  • 无涯教程-Erlang - sort函数
    对元素列表进行排序。sort-语法sort(lst)Lst - 需要排序的元素列表。sort-返回值返回元素的排序列表。-module(helloLearnfk).-import(lists,[sort/1]).-export([start/0]).start()->Lst1=[5,6,4],io:fwrite("~p~n",[sort(Lst1)]).当我们运行......
  • [AGC032D] Rotation Sort 题解
    题目链接点击打开链接题目解法题目中的操作可以理解为一个点移动位置首先给出一个结论:每个点只会动至多一次考虑\(dp\)一个比较妙的状态设定是\(f_i\)表示\(i\)不动的方案数不妨枚举\(j\)表示上一个不动点,限制是\(j<i\)且\(p_j<p_i\)中间满足\(j<k<i\)且\(p_......