上圖就是氣泡排序的流程。我們可以將其理解最初有一堆數字例如:4,1,7,9,6,8,5,3,2。那麼首先我們就將第乙個數字4和第二個數字1進行對比,將大的乙個放置在原本的第二個數字位置上。再將第二個數字與第三個數字進行比較,將大的放置在第三個位置上。同理不斷往復,直至對比大小到最後乙個數字,第一輪比較調整過後,最後乙個數字會變成這些數字裡面最大的那乙個,即為9。
但同時我們會發現,第一輪比較完成後,只是將這些數字中最大的9找出並放在的最後乙個數字位置上,但是其他的位置還是亂的,那麼就重複之前第一輪的操作,直到一次一次地把最大的數找出放在最後,最終就會完成全部排序。
詳細**如下:
public
classmp;
public
voidmp(
)}}for
(int i=
0;i<
9;i++)}
public
static
void
main
(string[
] args)
}
相比於氣泡排序,插入排序則要相對複雜那麼一點點。從上面的動態圖我們可以得知,插入排序的方法原理是從第二數字開始,與第乙個數字進行大小比較,將小的放置在前面的數字位置上,從第二個數字依次往後,每個數字都與前面的所有數字進行大小比價,直到比較到比前面的數字大位置停下,將數字防止與此位置。
假設的我們的數字組合為4,1,7,9,6,8,5,3,2。那麼就是從1開始向前比較,然後是7,再後是9等等,直至用最後乙個2與前面的數字比較結束。比較原則就是選取的數字不斷與前面各個數字依次比較,直到前面沒有數字了,或者比前面數字大,停下,將該數字放置於此。
詳細**如下:
public
classcr;
public
voidcr(
)else
break;}
if(num != arr[i])}
for(
int i=
0;ipublic
static
void
main
(string[
] args)
}
插入排序需要能夠理清楚在選擇出乙個數不斷向前比較的過程中,比它小的數字都會向後移動一位,這個被選出來向前比較的數字最後會落在比較中比它小的數字的後面一位這一點,就能夠搞清**邏輯。多看最上面的動態圖,有助於理解插入排序的原理。 氣泡排序,快速排序,插入排序
一 氣泡排序 大致分兩步 1 依次對比相鄰2個數字,前者比後者大就調換位置 2 重複第一步操作,直到所有數字都按順序排列 function bubblesort arr return arr 二 快速排序大致分三步 1 找基準 一般是以中間項為基準 2 遍歷陣列,小於基準的放在left,大於基準的放...
快速排序,氣泡排序,插入排序,希爾排序
快速排序 氣泡排序 插入排序 插入排序是最簡單最直觀的排序演算法,它的依據是 遍歷到第n個元素的時候前面的n 1個元素已經是排序好的了,那麼就查詢前面的n 1個元素把這第n個元素放在合適的位置,如此下去直到遍歷完序列的元素為止.演算法的複雜度也是簡單的,排序第乙個需要1的複雜度,排序第二個需要2的複...
氣泡排序 選擇排序 插入排序 快速排序
include 氣泡排序,思想 從最末位開始 往前一位一位比較,比前一位小的話,就交換位置 兩個for,第乙個for迴圈用於記錄已排序的位置,第二個for迴圈用於已排序位置到結束位置之間的氣泡排序 void popsort int p int n 選擇排序,由前往後選擇最小的數。一輪比較完後,將最小...