冒泡算法

深夜,无聊回想起大学时学的一些算法,便敲了一个最 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 类型。

  • 我把相同功能的变量声明在一行,而不是相同类型的变量,这样看起来清晰明了。

  • 我尽量使用短的变量名,也是为了代码简洁。

  • 花括号我是传统的另起一行,而不是时下很流行的和关键字在一行,是因为我认为这样更能清晰的表示一个函数块,而为了省一行的代码空间牺牲了这点则是得不偿失。

posted @ 2017-05-21 23:06  swyang  阅读(109)  评论(0编辑  收藏  举报