java中冒泡排序是什么 冒泡排序原理?
冒泡排序原理?冒泡法是一種簡(jiǎn)單的排序方法,它的實(shí)現(xiàn)非常簡(jiǎn)單。首先對(duì)n個(gè)項(xiàng)目進(jìn)行掃描,比較相領(lǐng)兩個(gè)項(xiàng)目的大小,若發(fā)現(xiàn)違背大小次序則進(jìn)行互換,由此可以使n個(gè)項(xiàng)目中的最大者換到最后。冒泡排序算法原理1、從后
冒泡排序原理?
冒泡法是一種簡(jiǎn)單的排序方法,它的實(shí)現(xiàn)非常簡(jiǎn)單。首先對(duì)n個(gè)項(xiàng)目進(jìn)行掃描,比較相領(lǐng)兩個(gè)項(xiàng)目的大小,若發(fā)現(xiàn)違背大小次序則進(jìn)行互換,由此可以使n個(gè)項(xiàng)目中的最大者換到最后。
冒泡排序算法原理
1、從后往前依次比較相鄰的元素。若是要按照升序排序,則后面的元素比前面的小,就交換這2個(gè)元素;降序則相反。
2、對(duì)每一對(duì)相鄰元素作同樣的工作,從第一對(duì)到最后一對(duì)。進(jìn)行一輪比較交換下來,最后的元素就會(huì)是最小(或最大)的數(shù)了,這個(gè)數(shù)就不用參與后面的比較操作了。
3、針對(duì)所有的元素重復(fù)以上的步驟。
4、持續(xù)每次對(duì)越來越少的元素重復(fù)上面的步驟,直到?jīng)]有任何一對(duì)數(shù)字需要比較。
原理:是將前后數(shù)組內(nèi)的兩個(gè)元素進(jìn)行比較(我們這個(gè)例子進(jìn)行升序排序,降序排序原理相同),大的元素位置往后調(diào)整,后面元素依次執(zhí)行。
我想知道這個(gè)冒泡排序中,為什么要用i和j呢,明明是一個(gè)以為數(shù)組呀i和j到底分別表示什么呢,求解釋?
i是一個(gè)臨時(shí)變量,在使用前已經(jīng)被賦值,所以在運(yùn)行的每步中,i是個(gè)具體的數(shù)值,所以是可以放在數(shù)組的下標(biāo)中的。
冒泡排序是不是穩(wěn)定排序?
冒泡排序就是把小的元素往前調(diào)或者把大的元素往后調(diào)。比較是相鄰的兩個(gè)元素比較,交換也發(fā)生在這兩個(gè)元素之間。所以,如果兩個(gè)元素相等,我想你是不會(huì)再無聊地把他們倆交換一下的;如果兩個(gè)相等的元素沒有相鄰,那么即使通過前面的兩兩交換把兩個(gè)相鄰起來,這時(shí)候也不會(huì)交換,所以相同元素的前后順序并沒有改變,所以冒泡排序是一種穩(wěn)定排序算法。
冒泡排序需要比較的次數(shù)?
1、冒泡排序在最優(yōu)情況下只需要經(jīng)過n-1次比較即可得出結(jié)果(即對(duì)于完全正序的表)
2、最壞情況下也要進(jìn)行n(n-1)/2 次比較,與選擇排序的比較次數(shù)相同,但數(shù)據(jù)交換的次數(shù)要多余選擇排序,因?yàn)檫x擇排序的數(shù)據(jù)交換次數(shù)頂多為 n-1,而冒泡排序最壞情況下的數(shù)據(jù)交換n(n-1)/2 。冒泡排序不一定要進(jìn)行 趟,但由于它的記錄移動(dòng)次數(shù)較多,所以它的平均時(shí)間性能比插入排序要差一些
C語言冒泡排序法詳解?
第一講:冒泡排序法基本原理
所謂冒泡排序法,就是對(duì)一組數(shù)字進(jìn)行從大到小或者從小到大排序的一種算法。具體方法是,相鄰數(shù)值兩兩交換。從第一個(gè)數(shù)值開始,如果相鄰兩個(gè)數(shù)的排列順序與我們的期望不同,則將兩個(gè)數(shù)的位置進(jìn)行交換(對(duì)調(diào));如果其與我們的期望一致,則不用交換。重復(fù)這樣的過程,一直到最后沒有數(shù)值需要交換,則排序完成。一般地,如果有N個(gè)數(shù)需要排序,則需要進(jìn)行(N-1)趟起泡,我們以從小到大排序?yàn)槔齺砜匆幌?,具體情況如下圖所示: