新手请教算法最优问题...
请高手指点:导师布置了一道题目:
欧盟投票系统:
英法德意:10;
西班牙:8;
比,希,荷,葡:5;
奥地利,瑞典:4;
爱,丹,芬:3;
卢森堡:2;
[62; 10, 10, 10, 10, 8, 5, 5, 5, 5, 4, 4, 3, 3, 3, 2]
欧盟如要通过一个决议,需要各成员国共同投票决定此决议的可行性,在每一个成员国面对:“自己的一票将左右决议是否执行”时,此时,该成员国,就是处于“关键角色”,一个成员国的“权力系数”,就等于:“其处于关键角色的15个国家的排列总数”/“15个国家没有任何限制的排列总数”。
导师要求:使用C语言,采用“枚举法”计算出所有的15个成员国的每一个国家的权力系数。
最终的成绩,将以每位同学写出的程序的执行效率给分。
本人考虑:使用枚举法计算的话,离不开排序,然后将每一种国家排列的顺序下,能够让当前国家处于“关键角色”的情况,“记录在案”----让计数变量i++,(i自加一次),将所有的排列中,以枚举法的思想,将枚举出的全部排列的所有“让当前国家处于关键角色”的情况,全部统计得出,最后,让得到的值,除以总共15个国家的排列的可能总数:15!。
排序的常用方法,共有如下的方法:
一、冒泡(Bubble)排序——相邻交换
二、选择排序——每次最小/大排在相应的位置
三、插入排序——将下一个插入已排好的序列中
四、壳(Shell)排序——缩小增量
五、归并排序
六、快速排序
七、堆排序
八、拓扑排序
九、锦标赛排序
十、基数排序
本打算将每一个排序的方法做出实现,然后进行测试,选用效率最高的方法的,但是,由于近日另一件事情的冲突,时间不够了。
希望高手能够指点:
本人所碰到的问题,使用哪一种排序算法,能够获得导师布置题目的“最优算法”的评价?
面对本人的题目要求,是否有比上述十个排序方法更适合于本人问题的场景的排序算法进行计算?
谢谢高手!!
期待您的回答!!