深夜,無聊回想起大學時學的一些算法,便敲了一個最 low 的排序算法 - 冒泡排序法:程序員
#include <stdio.h> static long arr[6] = { 1, 7, 6, 0, 2, 1 }; int main(int argc, char *argv[]) { long len; long i,j; long tmp; long cnt = 0; len = sizeof(arr)/sizeof(long) - 1; for(i=0; i<len; i++) { for(j=0; j<len-i; j++) { cnt++; if(arr[j]>arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } } printf("Sorted array is:"); for(i=0; i<len+1; i++) { printf(" %ld",arr[i]); } printf("\n"); printf("Used %ld steps\n", cnt); }
算法是個頗有趣,很奇妙的東西,它能夠讓咱們有底氣說,咱們不單單是程序員,咱們仍是數學家,哈哈!算法
順便說下個人代碼風格,個人原則是:清晰明瞭。函數
在上面的代碼中,我沒有使用 int 類型,是由於 int 類型的長度是平臺相關的,而 long 類型必定是 32 位的,因此爲了通用性,我儘可能避免使用 int 類型。code
我把相同功能的變量聲明在一行,而不是相同類型的變量,這樣看起來清晰明瞭。排序
我儘可能使用短的變量名,也是爲了代碼簡潔。數學
花括號我是傳統的另起一行,而不是時下很流行的和關鍵字在一行,是由於我認爲這樣更能清晰的表示一個函數塊,而爲了省一行的代碼空間犧牲了這點則是得不償失。io