這是在學(xué)校上C語言ppt課件上講到的,過程清晰很容易理解
一 冒泡排序過程
1、比較第一個(gè)數(shù)與第二個(gè)數(shù),若a[0]>a[1],則交換;然后比較第二個(gè)數(shù)與第三個(gè)數(shù);一次類推,直至第n-1個(gè)數(shù)和第n個(gè)數(shù)比較為止------第一趟冒泡排序,結(jié)果最大的數(shù)被安置在最后一個(gè)元素位置上。
2、對(duì)前n-1個(gè)數(shù)進(jìn)行第二趟冒泡排序,結(jié)果使次大的數(shù)被安置在第n-1個(gè)元素位置。
3、重復(fù)上述過程,共經(jīng)過n-1趟冒泡排序后,排序結(jié)束。
算法
假設(shè)存在一個(gè)int[] a
for(int i=0; i<a.length-1; i++) {
? ?for(int j=0; j<a.length-1-i; j++) {
? ? ? ?if(a[j]>a[j+1]) {
? ? ? ? ? ?int t = a[j];
? ? ? ? ? ?a[j] = a[j+1];
? ? ? ? ? ?a[j+1] = t;
? ? ? ?}
? ?}
}
第一層循環(huán),決定需要進(jìn)行n-1趟排序。
第二層循環(huán),決定每趟排序的開始和結(jié)束位置。
每結(jié)束一趟排序后,都將一個(gè)此次最大數(shù)據(jù)安置在此次比較數(shù)據(jù)的最后位置。
二 選擇排序過程
1、首先通過n-1次比較,從n個(gè)數(shù)中找出最小的,將它第一個(gè)數(shù)交換----第一趟選擇排序,結(jié)果最小的數(shù)被安置在第一個(gè)元素位置上。
2、再通過n-2次比較,從剩余的n-1個(gè)數(shù)中找出關(guān)鍵字次小的記錄,將它與第二個(gè)數(shù)交換----第二趟選擇排序。
3、重復(fù)上述過程,共經(jīng)過n-1趟排序后,排序結(jié)束。