发布网友
共3个回答
热心网友
一般来说,排序都是用的总分高低来排序的,但是更为合理的应该是按照本科的档次来分,比如,一本 总分由高到低,二本 三本类似,这样排起来更加清晰,还可以加上各档录取批次线或分数线。
热心网友
应该是计数排序,因为高考成绩是值为0~750分的整数,而且就算分数有什么0.5,高考也会干脆搞四舍五入,或者直接不给0.5,来确保所有分值都是整数,给计数排序提供了可行性。
计数排序可以将时间复杂度降到最低,为o(n+r),n为人数(约1000万人!),r=满分+1=751;而简单排序法如冒泡 、选择、插入的时间复杂度都会达到o(n^2)。而且计数排序所用时间长度还比较稳定,最好与最坏的情况基本没有什么差距。
这样算来,计数排序在时间上整整领先了8个数量级,而如今处理器的频率都是几个GHz(10^9 Hz级别),还是多核的,10的8~9次方的处理次数在时间上不会造成过大的负担。
内存占用上,虽然这个算法有一定空间复杂度,为o(n+r),高考全国统一考号为14位,需要以长整数的格式存储(最大值约为9.223*10^18),所以每个考号占8个字节,总共8*(n+r)字节,折算下来大概80多MB,而且原始表单存储在硬盘里,整个计分程序的内存占用,满打满算也就是你用浏览器看几个网页的内存占用,这对现在的电脑不是轻轻松松?无论是处理速度还是内存占用,在高考总分排名上,计数排序都是最优方案,拥有最高效率。
再者,计数排序还可以带来一个不错的副产物,就是每个分值(或分段)的人数也可以在最后用表格的方式生成,在数据库内给考生排好序的同时,也给院校招生,与考生估测自己可以进哪个院校,都提供了方便。
总之,虽然我没有亲自参与过这个项目,我只是被排名,被院校挑选的,但是最后,我凭借自己所学的知识,推理出了高考分数的排名机制——计数排序。
补充知识:
计数排序,是给最大最小值差距不大的一组整数(整数的个数可以很多)排序的一种算法,例如高考总分0~750分,考试分数0~100(或150)分,之类的。它不是很依赖大小的比较,它主要的机制是,遍历整个原始表单,记住每个对应数值上的对象个数,很多时候也得存储这些对象对应的编号,这些事作完以后,再根据数值顺序,给出已经排序完毕的表单,还可以顺便生成每个数值,或数值段的人数。计数排序算法在处理特定任务上有较大优势。
热心网友
快速排序