編程的50種基礎(chǔ)算法 冒泡排序算法的時(shí)間復(fù)雜度是什么?
初始狀態(tài)為正序,一次掃描即可完成排序。將所需的關(guān)鍵字?jǐn)?shù)和記錄數(shù)移動到最?。簹馀菖判蚴菍⑿≡叵蚯耙苿踊?qū)⒋笤叵蚝笠苿?,比較兩個(gè)相鄰元素之間的差異,并在兩個(gè)元素之間發(fā)生交換。因此,如果兩個(gè)元素相等,就
初始狀態(tài)為正序,一次掃描即可完成排序。將所需的關(guān)鍵字?jǐn)?shù)和記錄數(shù)移動到最?。簹馀菖判蚴菍⑿≡叵蚯耙苿踊?qū)⒋笤叵蚝笠苿樱容^兩個(gè)相鄰元素之間的差異,并在兩個(gè)元素之間發(fā)生交換。因此,如果兩個(gè)元素相等,就不會進(jìn)行交換;如果兩個(gè)相等的元素不相鄰,即使通過之前的成對交換相鄰,此時(shí)也不會進(jìn)行交換,因此相同元素的順序不會發(fā)生變化,因此氣泡排序是一種穩(wěn)定的排序算法。
冒泡排序算法的時(shí)間復(fù)雜度是什么?
直接選擇排序和冒泡排序的空間復(fù)雜度為O(1),因?yàn)橹皇褂昧藘蓚€(gè)循環(huán)變量和一個(gè)或兩個(gè)中間變量,如flag和exchange,這與要排序的記錄數(shù)無關(guān)。冒泡排序的時(shí)間復(fù)雜度最好是關(guān)鍵字排序,n-1關(guān)鍵字比較,0記錄移動,最差的是完全逆序,n(n-1)/2關(guān)鍵字比較當(dāng)記錄移動3N(n-1)/2次時(shí),冒泡排序的時(shí)間復(fù)雜度為O(n^2)。當(dāng)記錄移動至少0次,最多3(n-1)/2次時(shí),氣泡排序的時(shí)間復(fù)雜度為O(n^2)]~]。冒泡排序算法的時(shí)間復(fù)雜度最差為O(n^2),冒泡排序是通過將所有要排序的數(shù)字放入工作列表來實(shí)現(xiàn)的。從列表中的第一個(gè)數(shù)字到倒數(shù)第二個(gè)數(shù)字,逐一檢查:如果某個(gè)位上的數(shù)字大于下一個(gè)數(shù)字,則會與其下一個(gè)數(shù)字交換。重復(fù)步驟2,直到不能再更換為止。冒泡排序的平均時(shí)間復(fù)雜度與插入排序相同,也是平方級的,但也很容易實(shí)現(xiàn)。
選擇排序和冒泡排序的空間復(fù)雜度和時(shí)間復(fù)雜度是多少?
冒泡排序的最佳時(shí)間復(fù)雜度為O(n),即序列為正時(shí)。
在最佳情況下,6和7從不執(zhí)行,5一次只執(zhí)行一次。因此,