用quickSort 已经可以成功按照歌曲时间排序,请问如果遇到了时间相同的歌曲如何按照歌曲名排列呢?(如果歌曲名称还相同的话就按照演唱者排列)
这是算法部分的代码:
public static int partition(Song array[], int left, int right)
{
int i = left, j = right;
Song tmp;
int pivot = array[(left + right) / 2].time;
while (i <= j) {
while (array.time < pivot)
i++;
while (array[j].time > pivot)
j--;
if (i <= j) {
tmp = array;
array = array[j];
array[j] = tmp;
i++;
j--;
}
};
return i;
}
public static void quickSort(Song array[], int left, int right) {
int index = partition(array, left, right);
if (left < index - 1)
quickSort(array, left, index - 1);
if (index < right)
quickSort(array, index, right);
} 望高手提供一个能够保证运算速度的方法!感激不尽!
|