在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;
}
想要更高,必要打好地基,这就是冒泡排序的初阶到进阶的过程,哎!又想感叹,代码真神奇,数学要精啊!
这也可能只是像我这样的小码农才会说的,嘿嘿!!
好了,今天的文章就到这了,也该休息了!!