This algorithm is simple:
function minimumWaitingTime(times)
sort times in ascending order
totalWaiting := 0
cumulativeTime := 0
for i from 0 to length of times - 1
totalWaiting := totalWaiting + cumulativeTime
cumulativeTime := cumulativeTime + times[i]
return totalWaiting
Time: for sorting. Space: extra.