交換版的選擇排序與字典序的衝突以及一系列經驗積累

2021-10-22 12:48:02 字數 535 閱讀 6489

尋找前k個滿足條件的資料。不需要完全排序,只需要找到前k個。

但是按照字典序排列好之後,如果此時使用交換版的選擇排序,則可能破壞字典序。這個錯誤還算是挺隱蔽的。進而造成答案錯誤。

這個時候,最好使用額外空間按照順序記錄下前k個資料。並且用標記位表示是否已經記錄。

另外,盡可能手動初始化字串變數,或者在結尾加上『\0』,否則使用strcmp函式時,字串可能由於其初始值的不同造成strlen的不同,進而對於strcmp的結果產生影響。

突然意識到交換函式的精度問題,不過好在swap函式不需要擔心。這樣的話,想起來了唐計考試時候的一道題目,不適用中間變數,交換兩個變數的值。在計算機的角度,實際上使用加減法可能造成精度缺失。

a = a + b; b = a - b; a = a - b;

a = a * b; b = a / b; a = a / b;

但是上述問題換乙個角度,考慮溢位的問題。我們本能認為,加減法可能溢位,而乘除法只會溢位的更加厲害。但是即使溢位,由於後續有逆過程減法,最終結果是不變的。即雖然發生了溢位,但是卻沒有影響最終的結果。

陣列的 正序排序 倒序排序 值交換

陣列正序排序 int arr 遍歷,將元素進行比較 for int i 0 i arr.length i 展示結果 system.err.println arrays.tostring arr 陣列倒序排序 int arr 遍歷,將元素進行比較 for int i 0 i arr.length i ...

選擇排序的Matlab版實現

function outputarg1,outputarg2 selectionsort inputarg1,inputarg2 selectionsort 此處顯示有關此函式的摘要 此處顯示詳細說明 首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置。再從剩餘未排序元素中繼續尋找最小 ...

python字典交換key與value的兩種方法

交換key與value的兩種方法 利用jupyter notebook操作 方法一 使用dict.items 方法 dict ori dict new print dict new 執行結果 方法二 使用zip 方法 dict ori dict new2 dict zip dict ori.valu...