自定义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中时一等公民. 函数也是对象,可调用的对象. 函数可以作为普通变量,参数,返回值等等. 高阶函数: ...
随机推荐
- sso系统登录以及jsonp原理
登录的处理流程: 1.登录页面提交用户名密码. 2.登录成功后生成token.Token相当于原来的jsessionid,字符串,可以使用uuid. 3.把用户信息保存到redis.Key就是toke ...
- 思科AP-什么是COS AP?
COS:Click OS 所有新的wave 2 AP都带有COS.它建立在IOS之上,但behaves 不同. COS APs是Click OS APs(较新的AP型号,Wave 2等) 例如:18x ...
- StudentManagerSSM
web.xml StudentManagerSSM.rar <?xml version="1.0" encoding="UTF-8&quo ...
- Android Studio如何更新support repository
转自: http://blog.csdn.net/sinat_29696083/article/details/70256377 刚进新公司,熟悉新业务中.老大叫我看看关于ConstraintLayo ...
- python--脚本传参与shell脚本传参(位置参数)
写一个最简单的shell脚本,了解shell脚本是如何传参 1. vim test1.sh name=$1 age=$2 echo ${name} echo ${age} 2.调用脚本并传参 sh t ...
- git pull 之后怎么找回别覆盖掉的内容
[半夜吓出冷汗,git这个原理还真得好好学学] 不小心把本地写的东西pull了下,然后,全部覆盖掉了,以为就这样没了. 后面想到有“时光穿梭机”,“历史回滚”,在各大群友的帮助下,终于找回了. git ...
- 通过getGeneratedKeys获取记录的主键
Connection con=null; PreparedStatement ps=null; ResultSet rs=null; try { //建立连接 con= JDBCUtils.getCo ...
- CentOS7虚拟机优化
CentOS7: 将网卡配置重点关注的地方为: [root@master ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=st ...
- docker进入交互界面
进入cmd交互界面 docker run -it python:3.5 /bin/bash 退出 exit ctrl + d
- Linux 下面搭建KMS服务器
1. 下载安装Linux 版的KMS服务软件 # wget https://github.com/Wind4/vlmcsd/releases/download/svn1111/binaries.tar ...