日期:2014-05-19  浏览次数:20777 次

Java 按照成绩给考试人员名次 排序
有一个list、是从数据库里提出来的 list 里面存储的是数组对象、数组对象有考试名称、考试时间、学生姓名、考试科目(相同的科目、)、考试成绩(字符类型... 老项目、没办法。。。  疼...) 、考试名次(目前都置为0 )  ,名次是按照考试成绩算出来的。 目前就是这样  考试成绩转换成int型,比较大小,就这样。  纠结的是,要考虑相同的成绩,名次是一样的、 比较过后要怎么存放到list 里,看似很简单的一个排序,其实想想不是那么简单的、来个大神给指点一二,小弟表达能力不行,有点乱,见笑。
------最佳解决方案--------------------
引用:
引用:引用:
引用:1. Collections.sort去排
2. 顺序从1结果中取,排名=(大于当前分数的)人数+1



成绩是字符类型的,当分数是100的时候 比较都不行了  忘了说下了  list 提出来的时候 已经在数据库中按照 分数排过序……


按数字比啊,最好转换成你要的结果就行了啊。
------其他解决方案--------------------
Collections.sort去排
------其他解决方案--------------------
1. Collections.sort去排
2. 顺序从1结果中取,排名=(大于当前分数的)人数+1
------其他解决方案--------------------
ORDER BY  应该能比较String行的呀
------其他解决方案--------------------
能写出 重心代码 的最好  哈,请大神多多指教~
------其他解决方案--------------------
引用:
Collections.sort去排
   


如果这么简单就好了 那我的名次还都是 0 呢  这怎么办 重复的成绩呢? 这都不考虑了么 ? 呵呵
------其他解决方案--------------------
引用:
1. Collections.sort去排
2. 顺序从1结果中取,排名=(大于当前分数的)人数+1




成绩是字符类型的,当分数是100的时候 比较都不行了  忘了说下了  list 提出来的时候 已经在数据库中按照 分数排过序了, 现在问题就是当分数出现三位数的时候 成绩必须得一个一个提出来 比较大小的 
------其他解决方案--------------------
大体上明白了
但是不知道你想要的是哪一块的代码。
从数据库提取存储到list就不说了。
排名的话你可以遍历list,每次遍历一遍求出最高分的那一个(冒泡算法),然后给予排名,当然这个算法运算量太大。
如果调用Collections.sort,原理其实应该也是一样的。但是我不知道sort用的是哪一种算法。
这个涉及到数据结构里面排序的问题了。
量大的时候应该用快速排序比较合适,我记得这个应该是在量大的情况下排序最快的。
如果你需要用快速排序实现一下的话,回一下,我可以尝试着写一写试一试。
------其他解决方案--------------------
为什么分数100不能比较...
------其他解决方案--------------------
引用:
大体上明白了
但是不知道你想要的是哪一块的代码。
从数据库提取存储到list就不说了。
排名的话你可以遍历list,每次遍历一遍求出最高分的那一个(冒泡算法),然后给予排名,当然这个算法运算量太大。
如果调用Collections.sort,原理其实应该也是一样的。但是我不知道sort用的是哪一种算法。
这个涉及到数据结构里面排序的问题了。
量大的时候应该用快……


Collections.sort用的是快速排序
------其他解决方案--------------------
引用:
大体上明白了
但是不知道你想要的是哪一块的代码。
从数据库提取存储到list就不说了。
排名的话你可以遍历list,每次遍历一遍求出最高分的那一个(冒泡算法),然后给予排名,当然这个算法运算量太大。
如果调用Collections.sort,原理其实应该也是一样的。但是我不知道sort用的是哪一种算法。
这个涉及到数据结构里面排序的问题了。
量大的时候应该用快速排序比较合适,我记得这个……




冒泡排序 的话 我有试过的 当成绩重复的时候好像不太行的通的,要考虑多个成绩相同的时候 该怎么解决。  嗯嗯 ,那麻烦你一下啦 就写两重循环 还有里面的重点 的就好了 好几天了这块 本来项目上就添加一个查询功能 后来要说弄个名次  然后感觉很简单的东西  越做感觉越麻烦  
------其他解决方案--------------------
引用:
引用:1. Collections.sort去排
2. 顺序从1结果中取,排名=(大于当前分数的)人数+1



成绩是字符类型的,当分数是100的时候 比较都不行了  忘了说下了  list 提出来的时候 已经在数据库中按照 分数排过序了, 现在问题就是当分数出现三位数的时候 成绩必须得一个一个提出来 比较大小的