数组,vector的sort快速降序方法

在sort中因为默认是升序的,所以一般我们需要降序的时候就……了。

以前我在CF上看到有人用sort的数组降序方法,快速简单,然后刚才写425A - Sereja and Swaps题的时候又看到别人vector的降序方法,以前学习的时候怎么不知道呢,哈哈……虽然CF没多大建树,不过确实看到好多大神的编程方法以及优化方法,实在是很有用啊!

很多时候不是我们不懂,而是我们不会优化,对系统的函数用得不熟,所以我们的代码才看起来那么冗长,昨天做DIV2的时候C题根本不知道怎么做,没想到刚才看别人代码那么短,顿觉自己太弱了!!!!

然后看到别人的vector降序方法,所以把以前的sort降序方法一起总结个吧!多用用就不会忘 了……

int main()
{
    //数组排序
    int a[]={1,2,5,3,4,9,10,19,56,25,13,11};
    //sort(a,a+12); //降序
    sort(a,a+12,greater<int>()); //升序
    for(int i=0;i<12;i++)
        cout<<a[i]<<‘ ‘;
    cout<<endl;

    vector<int>v(a,a+12);
    //sort(v.begin(),v.end()); //降序
    sort(v.rbegin(),v.rend()); //升序
    //迭代器中:v.rbegin()=v.end(),v.rend()=v.begin()
    for(int i=0;i<v.size();i++)
        cout<<v[i]<<‘ ‘;
    cout<<endl;
    return 0;
}

由于:迭代器中:v.rbegin()=v.end(),v.rend()=v.begin(),所以刚才自己萌生了一个想法,然后试了一下:sort ( a + 12 , a); 还有 sort  ( v.end() , v.begin() ); 这都不行,嘿嘿,后面百度了才知道,原来在迭代器中,rbegin()=end() ……又长见识了,这CF做得有意义,哈哈

数组,vector的sort快速降序方法,码迷,mamicode.com

时间: 2024-10-09 02:19:48

数组,vector的sort快速降序方法的相关文章

在一组降序排列的数组中插入一个数据,插入后,数组中数据依然按降序排列

分析: 1.数组固定,是一个倒序的数组 2.插入一个数据,这个数据插在哪呢,要比较,与数组中所有的元素比较,这里需要一个循环,因为是降序的数组,所以当第一次遇到比自己小的,那么这个位置就是要插入的位置 3.因为上一步被占了位置,那么从这个插入的数据开始,后面的原本的数据都得向右移一位 /** * */ package com.cn.u4; import java.util.Scanner; /** * @author Administrator *向有序数组中插入学员成绩 * 在一组降序排列的数

升序 Collections.sort(list) 降序 Collections.reserve(list) 随机 Collections.shuffle(list)

1 package Day28ketangzuoye; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.HashSet; 7 import java.util.List; 8 import java.util.Scanner; 9 10 public class DemoChars{ 11 12 public stat

关于数组的倒叙、降序、目录是否包含文件、中文排序等等

int main(int argc, const char * argv[]) { @autoreleasepool { /* 第1题 请将如下数据存储成字典,并将字典内容以字符串形式输出,输出:"XXX,年龄XXX岁,科目XXX,分数XXX"(将XXX替换为相应的数据). */ //        NSString *name = @"张三"; //        NSInteger age = 22; //        NSNumber  *[email pr

【明哥工具箱】数组升序和降序

1 int[] x={1,6,4,8,6,9,12,32,76,34,23}; 升序: 1 Arrays.sort(x); 降序: 1 resort(x); 2 public int[] resort(int[] num){ 3 Arrays.sort(num); 4 int[] resort=new int[num.length]; 5 for(int j=0;j<num.length;j++){ 6 resort[j]=num[num.length-1-j]; 7 } 8 return re

list列表(也叫数组),以及常用的一些方法

列表的表达: 1.列表的增,list.append(元素).或list.insert(index,元素) 2.列表的删,list.pop(可指定index也可不指定,不指定默认删除最后一个元素).或list.remove(元素).或del list[index] 3.列表的改,list[index]=新元素 4.列表的查 5.列表常用的方法 6.列表的升序或降序方法:nums.sort()升序.nums.sort(reverse=True)降序 7.把列表a加到列表b里面去的方法:b.exten

Java实现数组降序的方法

在Java中对一个数组进行升序.降序除了用到冒泡排序法,还可以使用Arrays类自带的sort()方法实现,升序的方法比较常见,降序比升序多一个参数条件: Collections.reverseOrder() 同时需要注意的是降序的时候数组类型只能是包装类型,不能是基本数据类型 package _3_5_test; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import

对数组中的对象进行升序以及降序的排序方法(其中对象类型是系统类型).

[cpp] view plaincopyprint? <span style="font-size:32px;">NSArray *arr = [[NSArray alloc] initWithObjects:@"aa",@"bb",@"cc",@"dd",@"ee",@"ff", nil]; //1.对数组进行升序排序 //sortedArrayUsin

N个降序数组,找到最大的K个数

问题定义 这个问题来自网上看到的百度算法题,感觉很不错,问题定义如下: 假定有20个有序数组,每个数组有500个数字,降序排列,数字类型32位uint数值,现在需要取出这10000个数字中最大的500个,怎么做? 解决方法 这里其实有很多解决方法,笨拙的或者巧妙的.这里介绍一个非常不错的方法,使用最大堆堆排序: 1. 建立大顶堆,维度为数组的个数,这里为20(第一次 插入的是每个数组中最大的值,即第一个元素). 2. 删除最大堆堆顶,保存到数组或者栈中,然后向最大堆插入删除的元素所在数组的下一个

c++ sort降序排序

sort是c++ STL中提供的一个函数模板,可以用来对多种类型进行排序. 默认是升序排序.它有两种使用方法: default (1) template <class RandomAccessIterator> void sort (RandomAccessIterator first, RandomAccessIterator last); custom (2) template <class RandomAccessIterator, class Compare> void s