網(wǎng)上關(guān)于這個問題的描述繁多,但并不一定找準(zhǔn)了問題的關(guān)鍵。
兩者本質(zhì)都是任意2個數(shù)的比較,然后符合要求的,再做數(shù)值的交換。這里有一個重要的點(diǎn)需要提出來,巫差異的數(shù)組元素排序,冒泡和選擇是一致的,區(qū)別在于交換形式,選擇側(cè)重一步到位,冒泡關(guān)注循序漸進(jìn)。舉個簡單的例子,可能你在用選擇排序時獲取首位的最大值只需要2次交換,但后續(xù)處理的卻較多,相比而言,冒泡排序獲取首位最大值可能就需要4次或更多,但其后續(xù)的邏輯就比選擇排序要好。
兩者在時間復(fù)雜度上的差異的關(guān)鍵,
小司機(jī)覺得是涉及到相同元素的處理。
選擇一旦交換,后續(xù)相同數(shù)字不做處理
冒泡一旦交換,就可能是一大波僵尸的到來。毫無意義的比較。因此如果在設(shè)計冒泡排序時,增加對之前數(shù)字的相同比較就可以提高冒泡的效率。
但仍不敵選擇,因為選擇是關(guān)注的是結(jié)果。
即及時的最值每次都參與比較,相當(dāng)于不需要考慮重復(fù)數(shù)字的比較。
小司機(jī)最近準(zhǔn)備完善一些c需要的算法,整理后給大家分析一下。如果小司機(jī)說的有不對的地方還請指教,小司機(jī)最近在找工作,希望順利吧。