基于C语言中的sort如此这么方便,自然而然,java中也有类似C的sort函数。

1.普通数组:Arrays.sort(数组名,开始位置,结束位置)。

2.类中属性排序:

模板:

class A

{

  int n;

}

class cmp implement Comparator<A>

{

  降序:

  public int compare(A a,A b)

  {

    if(a.n < b.n)

    {

      return 1;

    }

    else if(a.n == b.n)

      return 0;

    else

      return -1;

  }

}

public class B

{

。。。。。。。

。。。。。。。

  A[] = new A[[10];

......................

  Arrays.sort(A,0,10,new cmp());

}

基本就是这样了

下面来看一道题目:

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)

题目描述

  1. 月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需
  2.  
  3. 求量,请你计算可以获得的最大收益是多少。
  4.  
  5. 注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有3种月饼,其库存量分别为181510万吨,总售价分别为75
  6.  
  7. 7245亿元。如果市场的最大需求量只有20万吨,那么我们最大收益策略应该是卖出全部15万吨第2种月饼、以及5万吨第3种月饼,获得
  8.  
  9. 72 + 45/2 = 94.5(亿元)。

输入描述:

  1. 每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N表示月饼的种类数、以及不超过500(以万吨为单位)的正整数
  2.  
  3. D表示市场最大需求量。随后一行给出N个正数表示每种月饼的库存量(以万吨为单位);最后一行给出N个正数表示每种月饼的总售价(以亿
  4.  
  5. 元为单位)。数字间以空格分隔。

输出描述:

  1. 对每组测试用例,在一行中输出最大收益,以亿元为单位并精确到小数点后2位。

输入例子:

  1. 3 20
  2.  
  3. 18 15 10
  4.  
  5. 75 72 45

输出例子:

  1. 94.50
  2.  
  3. 代码实现如下:
    package package1111;
  4.  
  5. import java.util.Arrays;
    import java.util.Comparator;
    import java.util.Scanner;
  6.  
  7. class MoonCake
    {
        int    quantity;
        int money;
        double unitprice;
    }
    class cmp implements Comparator<MoonCake>
    {
        public int compare(MoonCake A , MoonCake B)
        {
            if(A.unitprice < B.unitprice)
            {
                return 1;
            }
            else if(A.unitprice == B.unitprice)
            {
                return 0;
            }
            else
            {
                return -1;
            }
        }
    }
    public class Main
    {
        public static MoonCake num[] = new MoonCake[1005];
        public static void main(String []args)
        {
            Scanner cin = new Scanner(System.in);
            int N,D;
            N = cin.nextInt();
            D = cin.nextInt();
            for(int i = 0 ; i < N ; i++)
            {
                num[i] = new MoonCake();
                num[i].quantity = cin.nextInt();
            }
            for(int i = 0 ; i < N ; i++)
            {
                num[i].money = cin.nextInt();
                num[i].unitprice = num[i].money*1.0/num[i].quantity;
            }
            Arrays.sort(num,0,N,new cmp());
            double sum = 0;
            for(int i = 0 ; i < N ; i++)
            {
                if(num[i].quantity < D)
                {
                    sum += num[i].money;
                    D = D - num[i].quantity;
                    continue;
                }
                else if(num[i].quantity == D)
                {
                    sum += num[i].money;
                }
                else
                {
                    sum += D*num[i].unitprice;
                }
                break;
            }
            String output = String.format("%.2f", sum);
            System.out.print(output);
        }
    }
  8.  

java中的Sort函数,你值得看的更多相关文章

  1. Java中的回调函数学习

    Java中的回调函数学习 博客分类: J2SE JavaJ#  一般来说分为以下几步: 声明回调函数的统一接口interface A,包含方法callback(); 在调用类caller内将该接口设置 ...

  2. 转载:java中Thread.sleep()函数使用

    点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...

  3. java中string.trim()函数的使用

    java中string.trim()函数的的作用是去掉字符串开头和结尾的空格,防止不必要的空格导致的错误. public static void main(String arg[]){ String ...

  4. Java中的回调函数学习-深入浅出

    Java中的回调函数一般来说分为下面几步: 声明回调函数的统一接口interface A.包括方法callback(); 在调用类caller内将该接口设置为私有成员private A XXX; 在c ...

  5. Java中的split函数的用法

    Java中的 split  函数是用于按指定字符(串)或正则去分割某个字符串,结果以字符串数组形式返回: 例如: String str="1234@abc"; String[] a ...

  6. 关于Java中Collections.sort和Arrays.sort的稳定性问题

    一 问题的提出   关于Java中Collections.sort和Arrays.sort的使用,需要注意的是,在本文中,比较的只有Collections.sort(List<T> ele ...

  7. Java中能否利用函数参数来返回值

    转自https://blog.csdn.net/da_da_xiong/article/details/70039532 我们在写代码时通常会遇到一种情况,就是我们可能希望在一个函数操作完成后返回两个 ...

  8. JAVA中的Random()函数

    Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范 ...

  9. C++中的sort函数和⾃定义cmp函数

    写在最前面,本文摘录于柳神笔记: sort 函数在头⽂件 #include ⾥⾯,主要是对⼀个数组进⾏排序( int arr[] 数组或 者 vector 数组都⾏), vector 是容器,要⽤ v ...

随机推荐

  1. Bootstrap3基础 dropdown divider 下拉列表中的分割线

      内容 参数   OS   Windows 10 x64   browser   Firefox 65.0.2   framework     Bootstrap 3.3.7   editor    ...

  2. chrome浏览器中的百度搜索引擎总是先自动跳转到百度首页怎么办?

    1.修改百度搜索引擎代码如下: http://www.baidu.com/s?wd=%s&ie={inputEncoding} 备注:现在chorme不能直接在默认的百度搜索引擎上修改,而且自 ...

  3. [Sdoi2017]序列计数 矩阵优化dp

    题目 https://www.lydsy.com/JudgeOnline/problem.php?id=4818 思路 先考虑没有质数限制 dp是在同余系下的,所以\(f[i][j]\)表示前i个点, ...

  4. NodeJs 在window中安装使用

    Nodejs: 官网下载长期版本zip格式解压 D:\Program Files\nodejs 查看版本 D:\Git\SpringBootDemo (master) $ node -v v8.11. ...

  5. 如何自己烧制全文RSS(打造自己RSS源)

    烧制RSS源 到Feed43注册一个账号,虽说不注册也能用,但是为了方便修改自己烧制的RSS,最好还是注册一个账号来管理 到主页点击Create new feed 输入网址点击reload 可以看到请 ...

  6. c# 之 Microsoft.Practices.EnterpriseLibrary连接Oracle

    首先下载Microsoft Enterprise Library 5.0:http://www.microsoft.com/en-us/download/details.aspx?id=15104,这 ...

  7. Hbase与Oracle比较(列式数据库与行式数据库)

    Hbase与Oracle比较(列式数据库与行式数据库) 1 主要区别 Hbase适合大量插入同时又有读的情况 Hbase的瓶颈是硬盘传输速度,Oracle的瓶颈是硬盘寻道时间.   Hbase本质上只 ...

  8. PTA 7-1 整数分解为若干项之和(20 分)

    7-1 整数分解为若干项之和(20 分) 将一个正整数N分解成几个正整数相加,可以有多种分解方法,例如7=6+1,7=5+2,7=5+1+1,….编程求出正整数N的所有整数分解式子. 输入格式: 每个 ...

  9. Spring Boot 发布方法 - 原创

    发布方式 构建Jar包,cmd命令行运行Spring Boot程序 第一步:在pom.xml中将packing节点值修改为jar,如下面加粗部分: <groupId>com.example ...

  10. 异步编程- async和await

    使用目的 避免阻塞主线程 提高程序响应能力 C#中使用 C# 中的 Async 和 Await 关键字是异步编程的核心. 疑惑 The async and await keywords don't c ...