我一直在學習Java中的資料結構和演算法,我不知道這行代碼在這段代碼中是如何作業的。在第二行代碼,有嵌套回圈,我仍然不明白那行是如何作業的。array.length - i - 1 如何在我的代碼中作業?代碼是關于冒泡排序的。以下是代碼片段。
for(int i = 0; i < array.length - 1 ; i ) {
for(int j = 0 ; j < array.length - i - 1 ; j ) {
if(array[j] > array[j 1]) {
int temp = array[j];
array[j] = array[j 1];
array[j 1] = temp;
}
}
}
uj5u.com熱心網友回復:
這是一個簡單的交換(冒泡)排序演算法。對于要排序的長度串列N,它遍歷串列N - 1時間,交換條目以將較大的值移到串列的末尾,將較小的值移到串列的開頭。第一遍之后,串列中的最后一項保證在正確的位置。所以對于第二遍,內部回圈不必考慮最后可能的交換。在第二遍之后,最后兩個專案保證在正確的位置,因此內部回圈現在可以忽略最后兩個交換。第三遍之后,保證最后三個專案在正確的位置。等等等等。
根據上面的解釋,該arrays.length - i - 1運算式解釋了這樣一個事實,即每次遍歷串列時,需要考慮的專案對減少。由于這個運算式,在最后一次遍歷串列(外回圈的最后一次迭代)時,只有串列中的第一項和第二項可能是亂序的,因此在串列中只進行了一次比較和可能的交換最后一次迭代。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/510502.html
標籤:爪哇数组排序
上一篇:排序和顯示特定列
下一篇:用鍵從字典中提取多個資料的最大值
