冒泡排序是從我學C數組的時候最大的頭疼點,那時候for的二層循環的概念沒有那麼成熟。如今對冒泡排序沒有那麼恐懼了,多練,多用,沒啥好怕的。算法
咱們固然能夠一口氣將這四個數字從小到大來排序,但計算機須要一個一個的去比。那麼怎麼比呢?就須要用到排序算法了,排序的算法不少,此次的文章主要介紹冒泡排序。數組
冒泡排序簡介:顧名思義,‘冒泡’,在水中的泡泡,輕的飄上去,重的沉在水裏。code
拿9 5 7 1 這四個數字做爲例子排序
第一輪:for循環
9 5 7 1循環
5 9 7 1遍歷
5 7 9 1程序
5 7 1 9
第一輪比較下來,發現最大的數字跑到了最後面。在程序中能夠用一個for循環來遍歷這四個數字若是前一個比後一個大,則對其進行交換。數據
第二輪:計算機
5 7 1 9
5 1 7 9 (其實到這裏能夠不用比了)
5 1 7 9
5 1 7 9
第二輪將7放到了9的前面。一樣的道理,先後比較大的放後面。
第三輪
5 1 7 9
1 5 7 9 (應中止比較)
1 5 7 9
1 5 7 9
第三輪將5放在了7的前面
雖然有四個數字,但只需遍歷三次,由於其餘三個數字肯定放正確了,最後一個數字天然也就正確了。
#define N 4 int array[N] = { 9,5,7,1}; for (int i = 0; i < N-1; i++) { for (int j = 0; j < N-1-i; j++) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1 ]; array[j + 1] = temp; } } } for (int i = 0; i < N; i++) { printf("%d\n", array[i]); }
關鍵點在於外層循環的N-1,上文已經解釋是由於其餘的位置已經肯定最後一個數字不須要管。內層循環,首先N-1,是由於不用與本身比,N-1-i ,這裏又減了一個i,緣由是外層每循環一次就能肯定一個數字,因此每次減去一次外層。再對其進行大小比較,交換數據。