-
一些约定
一个playlist是指一个播放序列,其中的每个条目称为一个entry。每个条目对应一个计数器属性,称为counter,counter是实现这个算法的关键。
-
playlist初始化
将一些entry序列导入playlist,每个entry对应的counter置为0。
-
播放一个entry
- 开始播放/播放一条新的entry时:如果是新的entry,则新entry对应的counter加1;如果仅仅是repeat同一首歌,则counter不变。
- 播放中切换时:
- 取出当前playlist中各个entry中最小的counter值,记为counter_min;
- 取出所有counter值等于counter_min的entry,随机播放其中一条。
-
添加一条entry到playlist
- 取出当前playlist中各个entry中最小的counter值,记为counter_min;
- 这条entry追加到playlist末尾;置这条entry的counter为counter_min。
-
删除一条entry
略。