基于 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 (来自 小小 https://www.nowcoder.com/profile/59 )
题目描述
月饼是中国人在中秋佳节时吃的一种传统食品, 不同地区有许多不同风味的月饼. 现给定所有种类月饼的库存量, 总售价, 以及市场的最大需
求量, 请你计算可以获得的最大收益是多少.
注意: 销售时允许取出一部分库存. 样例给出的情形是这样的: 假如我们有 3 种月饼, 其库存量分别为 18,15,10 万吨, 总售价分别为 75,
72,45 亿元. 如果市场的最大需求量只有 20 万吨, 那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼, 以及 5 万吨第 3 种月饼, 获得
72 + 45/2 = 94.5(亿元).
输入描述:
每个输入包含 1 个测试用例. 每个测试用例先给出一个不超过 1000 的正整数 N 表示月饼的种类数, 以及不超过 500(以万吨为单位) 的正整数
D 表示市场最大需求量. 随后一行给出 N 个正数表示每种月饼的库存量 (以万吨为单位); 最后一行给出 N 个正数表示每种月饼的总售价 (以亿
元为单位). 数字间以空格分隔.
输出描述:
对每组测试用例, 在一行中输出最大收益, 以亿元为单位并精确到小数点后 2 位.
输入例子:
- 3 20
- 18 15 10
- 75 72 45
输出例子:
94.50
代码实现如下:
- package package1111;
- import java.util.Arrays;
- import java.util.Comparator;
- import java.util.Scanner;
- 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);
- }
- }
来源: https://www.cnblogs.com/674001396long/p/9626784.html