1. 程式人生 > >## 氣泡排序和選擇排序詳解--舉例-

## 氣泡排序和選擇排序詳解--舉例-

氣泡排序和選擇排序詳解

我們先看一下圖解,再舉個按身高排隊的例子,最後看一下程式,立馬明瞭!!!

一、圖解:尋找兩者的區別 1、氣泡排序: 在這裡插入圖片描述 2、選擇排序: 在這裡插入圖片描述

二、舉例理解 比如:有四個人身高分別為:A:176cm、B:160cm、C:180cm、 D:170cm,現在你們要升國旗,老師讓你們按從矮到高依次面向國旗站成一列。 氣泡排序: A先和後邊的B比了一下,你這麼矮站我後邊,咱倆換過來,然後A再跟C比較,此時A站在第二排,然後A跟C比了比就沒敢說啥,這時C看了一眼身後,發現D這麼矮還跑我後邊,於是他就跟D換了,這樣經過一輪後順序為B、A、D、C。 選擇排序:A先和B比了一下,他倆就換位置了,然後A又跟C比了一下,看見C老高了,就放棄了,但是他覺得自己還能往後,於是又找D比了比,成功的和D換了,這樣經過一輪後順序為:B、D、C、A。 總結:冒泡只能在相鄰的兩個數之間比較,選擇是一個和它後邊的挨個比一比。 三、源程式: 1、氣泡排序

(1)原始碼如下:例如將陣列a[N] = {12,56,34,6,28,90,75,46,23,9};從小到大排序。 for迴圈的外層迴圈只是控制迴圈的次數,內層的迴圈依次取第n個數,與後邊一個數第n+1個比較,如果 a[n] >a[n+1],也就是前一個數 大於隨後一個數則交換,這樣內層for迴圈第一次結束,則為{12,34,6,28,56,75,46,23,9,90},然後這樣迴圈N-1次,就可以將這些數按從小到大排列出來。 在這裡插入圖片描述 (2)執行結果: 在這裡插入圖片描述 2、選擇排序 (1) 原始碼如下:例如我們這十個數a[N] = {12,56,67,6,8,90,34,32,9,40};從小到大排序。 for迴圈除了表示迴圈的次數,還要取出一個數,內層迴圈依次拿出外層迴圈取出之後的數與這個數比較,例如:取出a[0],則在內層迴圈分別拿a[1]、a[2]、a[3]直到a[9]挨個與a[0]比較一下,滿足a[m] > a[n]之後,兩者交換,然後再比較a[m]和a[n+1],這樣依次執行就可以將這十個數排列出來。

在這裡插入圖片描述

(2) 執行結果: 在這裡插入圖片描述