冒泡算法

深夜,無聊回想起大學時學的一些算法,便敲了一個最 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

相關文章
相關標籤/搜索