深夜,无聊回想起大学时学的一些算法,便敲了一个最 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 类型。
我把相同功能的变量声明在一行,而不是相同类型的变量,这样看起来清晰明了。
我尽量使用短的变量名,也是为了代码简洁。
花括号我是传统的另起一行,而不是时下很流行的和关键字在一行,是因为我认为这样更能清晰的表示一个函数块,而为了省一行的代码空间牺牲了这点则是得不偿失。