江邊望海的技術人生
分享真知
用C語言編寫冒泡排序

其實,對於江邊望海來說,研究算法就是一種休閑活動。為什麼這麽說呢?業內習慣調侃程序員是碼農,在實際工作中業務代碼大多也都是體力勞動。

人什麼時候是最累的?

就是空虛的時候、沒有長進的時候,所以,重複的體力勞動以及已知的技術點出來碼來碼去實現產品業務,真的沒啥意思。呵呵!

言歸正傳,我是一名 php 後端開發工程師,接觸 php 也很長時間了,也知道 php 是基於 c 語言實現的。但是真正在 centos 編寫和調試 c 語言源碼還是第一次。

下面是翻譯國外開發者的一篇文章,這篇文章上的代碼也已經在 centos 7 上跑通。

–正文–

使用C語言實現冒泡排序:基於C語言編寫的冒泡排序,用於數字的升序或降序排列。你可以修改源碼實現降序和升序。冒泡排序的復雜度較高,效率比較低,下面代碼僅用於算法愛好者理解原理。其實,還有其他快速排序的算法。比如:快速排序,堆排序。排序簡化了計算機編程中的問題解決。

在C語言中實現冒泡排序

/* Bubble sort code */

#include <stdio.h>

int main()
{
  int array[100], n, c, d, swap;

  printf("Enter number of elements\n");
  scanf("%d", &n);

  printf("Enter %d integers\n", n);

  for (c = 0; c < n; c++)
    scanf("%d", &array[c]);

  for (c = 0 ; c < n - 1; c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (array[d] > array[d+1]) /* For decreasing order use < */
      {
        swap       = array[d];
        array[d]   = array[d+1];
        array[d+1] = swap;
      }
    }
  }

  printf("Sorted list in ascending order:\n");

  for (c = 0; c < n; c++)
     printf("%d\n", array[c]);

  return 0;
}

在C語言中使用函數實現冒泡排序

#include <stdio.h>

void bubble_sort(long [], long);

int main()
{
  long array[100], n, c, d, swap;

  printf("Enter number of elements\n");
  scanf("%ld", &n);

  printf("Enter %ld integers\n", n);

  for (c = 0; c < n; c++)
    scanf("%ld", &array[c]);

  bubble_sort(array, n);

  printf("Sorted list in ascending order:\n");

  for (c = 0; c < n; c++)
     printf("%ld\n", array[c]);

  return 0;
}

void bubble_sort(long list[], long n)
{
  long c, d, t;

  for (c = 0 ; c < n - 1; c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (list[d] > list[d+1])
      {
        /* Swapping */

        t         = list[d];
        list[d]   = list[d+1];
        list[d+1] = t;
      }
    }
  }
}

centos 編寫完成後,使用 gcc 編譯 c 的源文件

➜  default gcc bubble_sort.c -o bubble_sort
➜  default ./bubble_sort
Enter number of elements
4
Enter 4 integers
1
33
2
45
Sorted list in ascending order:
1
2
33
45

就可以執行。

原文地址:https://www.programmingsimplified.com/c/source-code/c-program-bubble-sort