public void scoreRank() { Double[] scoreArr = new Double[9]; scoreArr[2] = scoreArr[4] = 66.5; scoreArr[0] = scoreArr[5] = 67d; scoreArr[1] = scoreArr[3] = scoreArr[6] = 66.4; scoreArr[7] = 68d; scoreArr[8] = 66.2; List<Double> doubleList = Arrays.asList(scoreArr); List<Integer> rankList = new ArrayList<Integer>(); Collections.sort(doubleList, new Comparator<Double>() { public int compare(Double arg0, Double arg1) { return arg1.compareTo(arg0);// 降序排列 } }); for (Double double2 : doubleList) { System.out.print(double2 + "\t"); } System.out.println(); // 计算rank int rank = 0; // 前一个分数,初始化为一个很大的值 double lastScore = Integer.MAX_VALUE; int nOrder = 1; // 并列名次的个数 for (Double double2 : doubleList) { if (lastScore != double2) { // 当前分数和前一个分数不相等时求出名次:(上一个名次加上并列名次),否则认为是并列名次 rank = rank + nOrder; lastScore = double2; nOrder = 1; } else { nOrder = nOrder + 1; } rankList.add(rank); } for (Integer rank2 : rankList) { System.out.print(rank2 + "\t"); } System.out.println(); }
结果为:
68.0 67.0 67.0 66.5 66.5 66.4 66.4 66.4 66.2 1 2 2 4 4 6 6 6 9
相关推荐
计数排序(代码片段)
代码片段(快速排序)
归并排序(代码片段)
《Visual Studio 2008 代码片段管理器:源码解析与自定义指南》 在软件开发过程中,代码重用是提高效率的关键。Visual Studio 2008(VS2008)中的代码片段管理器是一个强大的工具,它允许开发者快速插入预先定义好...
精选的 PHP 代码片段可以让您在30秒内快速学习和了解 PHP 编程。这些精彩的片段涵盖了各种主题,从字符串操作到数组处理,再到文件操作和数据库连接,无所不包。只需阅读简短的代码示例,您就能快速掌握 PHP 的基础...
堆排序(代码片段utf-8编码)
8. **常用算法**:在开发过程中,可能会遇到排序、查找、图算法等问题,代码片段可能提供了这些常见算法的C#实现,如快速排序、二分查找、深度优先搜索等。 9. **设计模式**:设计模式是软件工程的最佳实践,代码...
### 希尔排序算法详解 #### 算法概述 希尔排序(Shell Sort),又称为缩小增量排序,是插入排序的一种更高效...以上代码片段清晰地展示了希尔排序在C++中的实现细节,对于理解和学习希尔排序算法具有很高的参考价值。
在给定的代码片段中,我们可以看到直接插入排序算法的具体实现。首先,定义了一个包含整数的数组`a`,这个数组包含了待排序的数据。然后,通过一个外层循环控制排序的轮次,内层循环则负责比较和数据移动。 #### ...
根据提供的代码片段,我们可以深入分析归并排序的具体实现细节。 ##### 1. 合并函数 `Mege` ```c void Mege(int a[], int left, int middle, int right) { int b[100]; int i = left, j = middle + 1, k = left; ...
该代码片段首先将所有列表项转换为数组,然后进行排序,并最终将排序后的元素重新添加到列表中。 #### 绑定右键菜单事件 通过绑定contextmenu事件,可以在用户尝试打开上下文菜单时拦截此行为。 ```javascript $...
根据提供的部分代码片段,我们可以看到一个名为`Sorts`的类,其中包含了不同的排序方法。例如,`quickSort`方法用于执行快速排序,而在主方法`main`中,创建了`Sorts`对象,并调用了`quickSort`方法对数组`L2`进行...
根据给定的代码片段,我们可以详细地分析其各个部分: ```java public class Four { int[] a = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35, 25, 53, 51...
由于提供的代码片段不完整,这里给出一个完整的归并排序示例: ```c void merge(int array[], int p, int q, int r) { int i, k = 0, begin1 = p, end1 = q, begin2 = q + 1, end2 = r, *temp; temp = (int *) ...
- 在给出的代码片段中,`template, typename Comparator>` 表示这是一个模板函数,能够处理任意随机访问迭代器类型的容器以及任意比较器类型。这种设计方式提高了函数的通用性。 #### 2. **并行排序主函数** `...
在实际应用中,开发者可以将这些代码片段整合到自己的项目中,通过调整CSS样式适应不同的设计需求,或者对JavaScript代码进行优化以处理更复杂的表格和更大的数据量。总的来说,这个代码示例为开发者提供了一个基础...
在给定的代码片段中,`InsertSort` 函数实现了直接插入排序。具体实现步骤如下: - 遍历数组中的每一个元素(除了第一个元素)。 - 将当前元素与已排序的元素进行比较,并将较大的元素向后移动。 - 当找到一个比...
根据给定的文件信息,我们将深入探讨拓扑排序的概念、实现以及C语言代码解析,同时对部分代码片段进行分析。 ### 拓扑排序概念 拓扑排序是针对有向无环图(DAG)的一种排序算法。在图中,如果存在一条从顶点A到...
根据提供的代码片段,我们可以看到一个典型的冒泡排序算法的实现方式: ```java int[] array = new int[/* 数组长度 */]; int temp = 0; for (int i = 0; i ; i++) { for (int j = i + 1; j ; j++) { if (array[j...