关于冒泡排序

在C语言的学习中,让我的思维更加严密谨慎,就如今天打的代码冒泡排序,居然可以用一个的框架把所有形式的字符或整型,更或结构体进行排序

struct stu
{
	char name[20];
	int age;
};
int cmp_int(const void* e1,const void* e2)
{
	return ((struct stu*)e1)->age - ((struct stu*)e2)->age;
}
void test()
{
	//int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
	//float arr[] = { 10.0,9.0,8.0,7.0,6.0,5.0,4.0,3.0,2.0,1.0 };
	struct stu s[3] = { {"zhangsan",20},{"lisi",30},{"wangwu,10"} };
	int sz = sizeof(s) / sizeof(s[0]);
	qsort(s, sz, sizeof(s[0]), cmp_int);
	/*int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", s[i]);
	}*/
}
int main()
{
	test();
	return 0;
}

那可谓是重复打了三遍代码,才知晓其中的含义,刚开始的不理解,在请问老师后,又开朗,哎,只想哀叹一声,码农真难!!!

但是从最开始的冒泡排序,还是极其容易理解的,就像下面:

int main()
{
	int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	int i = 0;
	for (i = 0; i < sz-1; i++)
	{
		int j = 0;
		for (j = 0; j < sz - 1 - i; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	int z = 0;
	for (z = 0; z < sz; z++)
	{
		printf("%d ", arr[z]);
	}
	return 0;
}

想要更高,必要打好地基,这就是冒泡排序的初阶到进阶的过程,哎!又想感叹,代码真神奇,数学要精啊!

这也可能只是像我这样的小码农才会说的,嘿嘿!!

好了,今天的文章就到这了,也该休息了!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值