原始的氣泡排序演算法的每一輪要遍歷所有的元素,輪轉次數和元素數量相當,時間複雜度是o(n^2)
1)原始的氣泡排序就算排序幾輪過後後半部分已經有序,原機制還是會從頭一直繼續執行,執行無用功。
所以優化辦法之一就是判斷陣列是否已經有序,並且做出標記,剩下幾輪就不必在執行。進行了交換說明無序,沒有進行交換則說明有序。
public class test
}if(issorted) }}
public static void main(string args) ;
sort(a);
system.out.println(arrays.tostring(a));
}}
2) 第一輪排序最後乙個是有序,第二輪排序最後兩個是有序的,以此類推視覺化規律-》(有序區的長度和排序的輪數是相等的)這個位置點之前的也不一定沒有順序,可能未排序之前就具有部分順序,有序區範圍大於排序的輪數;也就是說還是要找到最後一次進行調換的位置,那個點就是其之後的資料都是有序的。
public class test
}sortborder = lastindex;
if(issorted)}}
public static void main(string args) ;
sort(a);
system.out.println(arrays.tostring(a));
}}
C 氣泡排序 氣泡排序的優化
本文包含氣泡排序的三種實現方式 分別為氣泡排序初級版,公升級版,終級版 自己起的名字 使用時只要使用終極版就本以了,終級版為公升級版的優化版本 至於初極版和公升級版只是為了幫助理解 氣泡排序的時間複雜度為o n include include include include include incl...
氣泡排序以及氣泡排序的優化
很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...
氣泡排序 優化後的氣泡排序
氣泡排序法 演算法原理 依次比較相鄰兩個元素的大小,若後面的比前面的小,則交換兩個元素的位置 對每一對相鄰元素作同樣的工作,從第一對到最後一對。進行一輪比較交換下來,最後的元素就會是最小的數了,這個數就不用參與後面的比較操作了 思路 遍歷陣列,對陣列中相鄰的兩個元素進行比較,如果需要公升序,前乙個資...