您的位置:首页 > 新闻 > 会展 > 最美情侣高清视频播放_什么是b2c网站_软文广告素材_人际网络营销2900

最美情侣高清视频播放_什么是b2c网站_软文广告素材_人际网络营销2900

2025/2/24 1:20:17 来源:https://blog.csdn.net/qq_64176311/article/details/145662027  浏览:    关键词:最美情侣高清视频播放_什么是b2c网站_软文广告素材_人际网络营销2900
最美情侣高清视频播放_什么是b2c网站_软文广告素材_人际网络营销2900

一、仿写冒泡排序函数原型(的使用)

#include <stdio.h>
//int arr[] 实际传递的是数组首元素地址,int arr[]也可以写成 int *arr
void Sort(int arr[], int sz) 
{int i = 0;int count = 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;}				}count++;		}printf("%d\n", count);
}int main()
{//整型数据int arr[] = { 3,1,4,2,9,8,6,7,0,5 };//写一个函数对数组进行排序int sz = sizeof(arr) / sizeof(arr[0]);Sort(arr, sz);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

这段代码实现整型数组冒泡排序。

Sort 函数通过两层循环,内层比较相邻元素,若顺序不对则交换,外层控制趟数,并统计趟数输出。

main 函数定义整型数组,sz计算其大小,调用 Sort 排序后打印数组。

比如:

int arr[] = { 3,1,4,2,9,8,6,7,0,5 }; , 假设j=0时,

arr[j] > arr[j + 1]      3>1?  大于则交换

二、改造冒泡排序函数bubble_sort()

//二、改造冒泡排序函数,使得这个函数可以排序任意指定的数组//实现一个比较整型的函数
int cmp_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;//看返回值是 >0  <0  ==0
}
void Swap(char* buf1, char* buf2, int width)
{int i = 0;for (i = 0; i < width; i++)//eg:  比如int类型  width有4个字节,循环四次{char tmp = *buf1;//逐个字节进行地址所指向的内容的交换*buf1 = *buf2;*buf2 = tmp;buf1++;buf2++;}
}
void bubble_sort(void* base, size_t sz, size_t width, int (*cmp)(const void* e1, const void* e2))
{//趟数size_t i = 0;for (i = 0; i < sz - 1; i++)//从0开始,要减1{//一趟冒泡排序的过程size_t j = 0;for (j = 0; j < sz - 1 - i; j++){//↓(char*)base:起始位置,char*是说按照字节向后偏移,// j * width、(j + 1) * width是相对于数组起始地址base的偏移量if (cmp((char*)base + j * width, (char*)base + (j + 1) * width) > 0){//交换(一个字节)Swap((char*)base + j * width, (char*)base + (j + 1) * width, width);}}}
}
//使用我们自己写的bubble_sort函数排序整型数组
void test3()
{int arr[] = { 9,8,7,6,5,4,3,2,1,0 };int sz = sizeof(arr) / sizeof(arr[0]);bubble_sort(arr, sz, sizeof(arr[0]), cmp_int);int i = 0;for (i = 0; i < sz; i++){printf("%d ", arr[i]);}
}
int main()
{test3();return 0;
}

cmp_int 函数:
比较两个 int 值,通过 e1 减 e2 返回比较结果,用于判断大小。
 Swap 函数:
以字节为单位,交换 buf1 和 buf2 指向的 width 字节的数据。
 bubble_sort 函数:
通用冒泡排序, base 是数组起始地址, sz 为元素个数, width 是单个元素字节数, cmp 是比较函数。
两层循环实现冒泡排序,根据 cmp 结果,用 Swap 交换元素位置。
 test3 函数:
定义整型数组 arr ,计算其元素个数 sz 。
调用 bubble_sort 对 arr 排序,最后打印排序后的数组。

三、总结:

第一段代码仅针对整型数组排序, Sort 函数直接处理 int 数组,硬编码了数组类型和元素交换方式,未考虑通用性。

第二段代码通过函数指针和字节交换实现通用冒泡排序,能处理任意类型数组, bubble_sort 接受 void* 类型指针、元素个数、单个元素字节数及比较函数指针。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com