氣泡排序和選擇排序

2021-10-03 17:50:58 字數 1124 閱讀 4740

一、氣泡排序:

分析:每次將相鄰兩個數比較,將小的調到前面。若有5個數:5 4 3 2 1第一次先將5和4對調。第二次將第二個數和第三個數對調(5和3)…可以看出需要對調五次,得到4 3 2 1 5的順序,最大的5已經「沉底」,而小的數已經「上公升」。以此類推,在第一趟的過程中,共需要4次比較和交換。在第二趟的過程中,第一次先將4和3比較交換。第二次將第二個數和第三個數(4和2)比較交換…經過3次比較交換後,得到3 2 1 4 5。 容易發現5個數共需要4趟比較,第一趟需要4次兩兩比較交換,第二趟需要3次兩兩比較交換…也就是說如果有n個數,需要n-1趟比較,第1趟需要n-1次兩兩比較交換,第j趟需要n-j次兩比較交換。

#include

#include

intmain()

//氣泡排序

int temp;

for(

int i=

0;i1;i++)}

}for

(int i=

0;i)return0;

}

二、選擇排序:

分析:例如有3 7 1 9 8,第一趟先把最小的數1找出來放到3的位置,此時排序為1 7 3 9 8;第二趟把未排序的最小數3找出來放在7的位置,此時排序為1 3 7 9 8;第三趟把未排序的最小數7找出來,此時7剛好是最小,因此不用移動位置;第四趟把未排序的最小數8找出來放在9的位置,此時排序為1 3 7 8 9,完成了整個排序。

#include

#include

intmain()

//選擇排序

int index;

int temp;

for(

int i=

0;itemp=a[i]

; a[i]

=a[index]

; a[index]

=temp;

}for

(int i=

0;i)return0;

}

總結:可以看出起泡法和選擇排序法需要的趟數都是一樣的,不同的是交換的次數。起泡法每次比較就要立刻交換,而選擇排序是把未排序最小的數找出來與它應在的位置上的元素交換。相對來說,選擇排序交換次數較少,一定程度上提高了運算效率。

排序 氣泡排序和選擇排序

目錄 氣泡排序 氣泡排序原理圖 demo 執行 選擇排序 氣泡排序原理圖 demo 執行 說明 include include using namespace std name 氣泡排序法 number 傳入陣列 length 陣列長度 setw 需要匯入 include ps 這是乙個lib.h的...

選擇排序和氣泡排序

選擇排序和氣泡排序 演算法 蠻力法選擇排序,第一次掃瞄整個陣列,找到最小元素,然後和第乙個元素交換。第二次從第二個元素開始掃瞄陣列,找到剩下的元素中最小的與第二個元素交換位置,直到最後。89 45 68 90 29 3417 17 45 68 902934 89 17 29 68 90 453489...

選擇排序和氣泡排序

選擇 從小到大排序 int a 5 a 0 a 1 a 2 a 3 a 4 5 4 3 2 1 1 5 4 3 2 第一輪比較 拿a 0 和後面的元素依次比較 如果a 0 a i 那麼兩個數交換 1 2 5 4 3 第二輪比較,拿a 1 和後面的元素依次比較,如果a 1 a i 那麼兩個數交換 1 ...