我正在學習關於數據結構的課程,並且教師給出了以下用於選擇排序的代碼。但我認爲這是不正確的,因爲在選擇排序中,我們掃描整個數組並在每次迭代中查找最小元素,用它的正確位置交換它。但是在下面的代碼中,我們每次都交換,我們發現一個比當前元素小的元素。所以請讓我知道這是否正確。下面的選擇排序代碼是否正確?
public static void selectionsort(int[] listtosort)
{
for (int i=0; i<listToSort.length; i++)
{
for (int j=i+1; j<listToSort.length; j++)
{
if (listToSort[i] > listToSort[j])
{
swap(listToSort, i, j);
print(listToSort);
}
}
}
}
但我們一定會被其最壞的情況下測量算法的演出]吧?互換的數量將是O(N^2)在最壞的情況下scenario.Also它帶走的是選擇排序有較少數量的事實與插入排序進行比較時的交換。 –
我的意思是在我剛纔提到的代碼中,在最壞的情況下,交換次數是0(N^2)? –
是的,他們不改變'大O'的表現但是,如果在內存寫入比讀取像比如說閃存更昂貴的交換數量變得重要的權利? –