自定义sort排序
java的sort自定义:
1.排序对象必须是封装类而不能是基本数据类型;
2.调用Arrays.sort(array, left, right, cmp)进行排序,array为数组,left、right为范围,cmp为你定义的比较函数;
3.定义的cmp对象需要重写Comparator<>类的compare方法;
import java.util.*;
public class Main
{
static Integer []A = null;
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
Comparator<Integer> cmp = new Comparator<Integer>() {
public int compare(Integer a, Integer b) {
return b - a;//降序
}
};
int n = in.nextInt();
A = new Integer [n];
for (int i = 0; i < n; i++) A[i] = in.nextInt();
Arrays.sort(A, 0, n, cmp);
for (Integer i : A) System.out.println(i);
}
复习一下c++的自定义sort
第一种:自定义类
sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错。 invalid use of non-static member function
因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法再sort中调用非静态成员函数。
静态成员函数或者全局函数是不依赖于具体对象的, 可以独立访问,无须创建任何对象实例就可以访问。同时静态成员函数不可以调用类的非静态成员。
#include <iostream>
#include "algorithm"
#include "cmath"
using namespace std;
class deal{
public:
static bool cmp(int l,int r){
return l>r;//降序
}
void test(int *arr,int size){
sort(arr,arr+size,cmp);
for(int i=;i<size;++i)
cout<<arr[i]<<" ";
cout<<'\n';
}
};
int main()
{
deal a;
int arr[]={,,,,,,,};
a.test(arr,);
return ;
}
第二种自定义比较函数:
#include <iostream>
#include "algorithm"
#include "cmath"
using namespace std;
bool cmp(int l,int r){
return l>r;
}
int main()
{ int arr[]={,,,,,,,};
sort(arr,arr+,cmp);
for(int i=;i<;i++)
cout<<arr[i]<<' ';
cout<<endl;
return ;
}
自定义sort排序的更多相关文章
- Java自定义 sort 排序方法
Sort用法 •结构 1 package Test; 2 3 import java.util.Arrays; 4 import java.util.Random; 5 import java.uti ...
- 【转载】C#中自定义Sort的排序规则IComparable接口
C#中的List集合在排序的时候,如果不使用Lambda表达式进行排序的话,一般调用Sort()方法进行排序,如果希望Sort()方法排序后的结果跟我们预想的效果一致或者按照我们自定义的规则排序,则需 ...
- java中的排序(自定义数据排序)--使用Collections的sort方法
排序:将一组数据按相应的规则 排列 顺序 1.规则: 基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...
- javascript:算法之数组sort排序
数组sort排序 sort比较次数,sort用法,sort常用 描述 方法sort()将在原数组上对数组元素进行排序,即排序时不创建新的数组副本.如果调用方法sort()时没有使用参数,将按字母顺序( ...
- 廖雪峰js教程笔记4 sort排序的一些坑
排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个对象呢?直接比较数学上的大小是没有意义的,因 ...
- List<T>.Sort() 排序的用法
List<T> 可以通过 .Sort()进行排序,但是当 T 对象为自定义类型时(比如自定义模型),就需要 IComparable接口重写其中的方法来实现,实现代码如下: class Pr ...
- [wordpress]根据自定义字段排序并根据自定义字段查询
Wordpress中,根据根据自定义字段排序和查询是通过WP_Query()方法 如根据 一个自定义的sort的数字字段从小到大进行排序 $args = array( 'post_type' => ...
- STL中sort排序算法第三个参数_Compare的实现本质
关于C++ STL vector 中的sort排序算法有三种自定义实现,它们本质上都是返回bool类型,提供给sort函数作为第三个参数. 重载运算符 全局的比较函数 函数对象 我认为从实现方式看,重 ...
- 高阶函数,柯里化,sort排序
高阶函数概念 first class object: 函数在python中时一等公民. 函数也是对象,可调用的对象. 函数可以作为普通变量,参数,返回值等等. 高阶函数: ...
随机推荐
- Python:字典类型
概念 无序的,可变的,键值对集合 定义 方式1 {key1: value1, key2: value2, ......} 方式2 fromkeys(S, v=None) 静态方法:类和对象都可以调用 ...
- Bugku-CTF社工篇之简单的社工尝试
- Perl 笔记
目录 Perl 学习 常用记录 基础 1. 运行perl 2. 字符串 3. 变量 4. 条件 5. 循环 6. 运算符 7. 时间日期 8. 子程序(函数) 9. 引用 10. 格式化输出 11. ...
- 【原】mac电脑使用总结
mac下终端配置(item2+oh-my-zsh)+solarized配色方案:https://www.cnblogs.com/weixuqin/p/7029177.html
- 高级T-SQL进阶系列 (一)【下篇】:使用 CROSS JOIN 介绍高级T-SQL
[译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文链接:传送门. 性能考虑产生了笛卡尔积的这个CROSS JOIN操作符具有一些性能方面的问题需要考虑.因为SQL引擎需要将一个数 ...
- python2.7 一个莫名其妙的错误
先看看错误: Traceback (most recent call last): File "/home/darkchii/文档/PycharmProjects/ml/model.py&q ...
- 关于cmd的命令行参数的问题
最近学习Java了解到发现需要配置环境变量其中Path需要更改为 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 而这样的行为无意间导致了win中cmd的一些参数无法使用,比 ...
- 于elasticsearch-rest-high-level-client 操作 Es
安装Java:要求JDK为1.8及以上版本. 创建阿里云Elasticsearch实例:实例版本要求大于等于elasticsearch-rest-high-level-client的版本.本文创建一个 ...
- linux压缩包管理
1.gzip 文件 ----> .gz格式的压缩包 2.bzip2 文件 ----> .bz2格式的压缩包 3.tar -- 不使用z/j参数 该命令只能对文件或目录打包 参数: c -- ...
- 【Android多线程】异步任务AsyncTask类
https://www.bilibili.com/video/av65170691?p=9 (本文为此视频观看笔记) 一.为什么需要此类 Handler繁琐 二.理解AsyncTask 2.1 参数( ...