C#程序员面试算法宝典
上QQ阅读APP看书,第一时间看更新

2.7 如何设计一个排序系统

难度系数:★★★★☆ 被考察系数:★★☆☆☆

题目描述:

请设计一个排队系统,能够让每个进入队伍的用户都能看到自己在队列中所处的位置和变化,队伍可能随时有人加入和退出;当有人退出影响到用户的位置排名时,需要及时反馈到用户。

分析与解答:

本题不仅要实现队列常见的入队列与出队列的功能,而且还需要实现这样一个功能:队列中任意一个元素都可以随时出队列,且出队列后需要更新队列用户位置的变化。

需求明确了以后,不难进行代码实现。实现代码如下:

程序的运行结果为

算法性能分析:

此排序系统利用了队列的先进先出的特性,由于队列采用List集合方式实现,在进行入队列操作的时候的时间复杂度为O(1),在队首进行出队列的时间复杂度也为O(1)。