Я новичок, позвольте мне сказать решение, которое приходит на ум, если что-то не так, пожалуйста, сообщите мне об этом.
Предположим, что песни хранятся в односвязном или двусвязном списке.Каждый раз, когда музыкальный проигрыватель открывается, выберите случайное число, меньшее, чем (любое желаемое вами число), чтобы принять k, и поменяйте местами каждые k узлов в списке, аналогичным образом сделайте это дважды или максимально трижды (как вы хотите), что будет принимать O2n) или O (3n) время, чтобы перемешать.наконец, есть указатель на последний узел списка.И каждый раз, когда прослушивается песня (посещается узел), удаляют узел и вставляют его рядом с последним узлом, что можно сделать за O (1) раз.Это продолжается до тех пор, пока музыкальный проигрыватель не закроется.
Спасибо, хочу знать правильность ответа.