c語(yǔ)言選擇排序法和冒泡排序 選擇排序與冒泡排序區(qū)別?
選擇排序與冒泡排序區(qū)別?是的,區(qū)別主要在于交換的方式。在每一輪中,最大或最小的元素被篩選出來(lái)并放在相應(yīng)的位置。這是相同的,但對(duì)于每一輪,如第一輪,1~n是選擇氣泡法:比較和移動(dòng)兩個(gè)相鄰的項(xiàng)目,每次選擇
選擇排序與冒泡排序區(qū)別?
是的,區(qū)別主要在于交換的方式。在每一輪中,最大或最小的元素被篩選出來(lái)并放在相應(yīng)的位置。這是相同的,但對(duì)于每一輪,如第一輪,1~n是選擇氣泡法:比較和移動(dòng)兩個(gè)相鄰的項(xiàng)目,每次選擇排序。每次交換當(dāng)前項(xiàng)和第n項(xiàng)。我來(lái)寫代碼,你就會(huì)明白:Bubble:for I:=1 to n-1 do if(a[I]>A[I 1])then swap(I,I 1)select:for I:=1 to n-1 do if(a[I]>A[n])then swap(I,n)(swap)一般來(lái)說(shuō),這兩種類型的比較時(shí)間是相同的,但交換時(shí)間較少。雖然這兩種排序的時(shí)間復(fù)雜度是O(n^2),但一般來(lái)說(shuō),選擇排序的速度更快
我現(xiàn)在想了解這個(gè)問(wèn)題。事實(shí)上,這個(gè)比較排名的下界(注意下界是最好的情況)一定是對(duì)的。但有一個(gè)條件,即在排序過(guò)程中,附加的信息或條件不能用來(lái)比較排序的下限。
1. 氣泡排序,它利用了上次掃描中沒(méi)有發(fā)生交換的附加條件。
2. 插入排序,它利用了大量有序元素的額外信息。
3. 快速排序,如果采用三向切分法,可以將其分為與pivot相同、大于pivot和小于pivot,然后利用含有大量重復(fù)元素的額外信息來(lái)突破nlogn。因此,比較排名或下界的最佳情況是nlogn,它不考慮任何附加條件和附加信息。如果你對(duì)數(shù)據(jù)做額外的假設(shè),你就可以突破這個(gè)下限。