首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    内存函数​(memcpy、memmove、memset、memcmp)

    "hello bit"; memset(arr, 'x', 5); //memset 在设置的时候,是以字节为单位来设置的 printf("%s\n", arr); return 0; } memcmp...的函数的使用​ int memcmp ( const void * ptr1, const void * ptr2, size_t num ); • 比较从ptr1和ptr2指针指向的位置开始,向后的...返回值>0 int main() { int arr1[] = { 1,2,3,4,5,6,7,8,9,10 }; int arr2[] = { 1,2,3,4,8 }; int ret = memcmp...使用 memcmp 函数来比较这两个数组的前17个字节。需要注意的是,一个整数通常占用4个字节(这取决于系统和编译器),所以这里实际上比较的是两个数组的前4个整数以及第5个整数的部分字节。...memcmp 函数会返回两个内存区域之间的差异。如果第一个不匹配的字 在 arr1 中的值小于 arr2 中的值,则返回一个负数。如果相等,则返回0。

    2.6K10

    【C进阶】——内存操作函数memcpy、memmove、memcmp、memset详解及其模拟实现

    内存比较函数—— memcmp 4.1函数介绍 memcmp的参数,其实和strncmp是非常相似的: 它们的区别在于strncmp只能比较字符类型的数据(因为函数参数设计的是char*)...而对于memcmp来说,它不管内存中放的是什么类型的数据,都可以进行比较,因为memcmp的参数设计的是void*。...除此之外,它们没什么不同,都是一个字节一个字节的进行比较,如果相同,继续比较下一个字节的内容,直至比较完num个字节的内容,返回值也一样: 我们练习一下memcmp的使用: #include memcmp的模拟实现 memcmp的实现思路其实也很简单,我们就一个字节一个字节的比较,如果相等就继续比较下一个字节,不相等就返回对于的值,如果比完了num个字节都相等,就返回0。...看代码: int my_memcmp(const void* s1, const void* s2, size_t num) { assert(s1 && s2); while (num--) {

    1.1K10

    常见排序算法-冒泡排序、选择排序 、插入排序 、快速排序、 归并排序 、堆排序

    ‍个人主页: 才疏学浅的木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:排序算法 排序算法 冒泡排序 冒泡排序的优化 选择排序 插入排序...快速排序 归并排序 堆排序 冒泡排序 平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 简单的冒泡排序...[3,2,1,4,5,6] 如果按照普通冒泡排序下次需要遍历的下标范围为[0,4] 但是[3,4]是已经有序的,所以可以减少比较,保存上次交换的结束位置 public int[] bubbleSort...平均时间复杂度: o(n^2) 最好时间: o(n) 最坏时间: o(n^2) 空间复杂度: o(1) 是否稳定: 稳定 插入排序 public int[] insertSort...平均时间复杂度: o(nlogn) 最好时间: o(nlogn) 最坏时间: o(n^2) 空间复杂度: o(logn) 是否稳定: 不稳定 快速排序 public void

    1.3K50

    【C语言内存函数全面解析】深入了解 memcpy、memmove、memset 和 memcmp 的区别与应用

    【入门必看】C语言四大内存函数全解析:memcpy、memmove、memset、memcmp 你是否经常被这些“看起来差不多”的内存函数搞糊涂?...“memcmp 为什么比较不出字符串的大小?” 别急,这篇文章我们从最基础的原理、内存图示、代码示例、常见坑与模拟实现一步步讲清楚! 阅读完这篇,你不仅能用,还能“讲给别人听”。...函数 功能 是否允许重叠 返回类型 memcpy() 拷贝内存 ❌ 否 void* memmove() 拷贝(重叠安全) ✅ 是 void* memset() 填充内存 — void* memcmp()...与 strcmp 不同,memcmp 不依赖字符串结束符 '\0',因此可用于比较任意类型的二进制数据,如结构体、文件缓冲区等。 它常用于内存校验、排序或验证数据是否一致的底层操作中。...内存比较 — 校验、排序、验证

    26210

    ————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)

    文章涉及具体代码gitee: 登录 - Gitee.com 1.插入排序 具体分析过程见我的博客插入排序: [数据结构]——排序——插入排序-CSDN博客 1.直接插入排序 void InsertSort...5.总的分析总结 插入排序是一种简单直观的排序算法,它的基本思想是将待排序的元素逐个插入到已排序序列中的适当位置,直到全部元都插入完毕。插入排序包直接插入排序和希尔排序。...直接插入排序: 算法思想:将待排序序列分为已排序和未排序两部分,初始时已排序部分只有一个元素。然后从未排序部分依次取出元素,与已排序部分的元素进行比较并插入到合适的位置。...选择排序是一种简单直观的排序算法,它的基本思想是每次从待排序序列中选择最小(或最大)的元素放到已排序序列的末尾。选择排序包括选择排序和堆排序。...选择排序: 算法思想:将待排序序列分为已排序和未排序两部分,初始时已排序部分为空。每次从未排序部分选择最小(或最大)的元素,放到已排序部分的末尾。

    56710

    基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)

    项目地址:https://github.com/windwant/windwant-service/tree/master/algorithm 冒泡排序:两两比较,大数冒泡 升序: public static...选择排序:选择剩余元素中最小(最大)的元素放置到初始选择集合中(空) public static void SelectionSortAsc(int[] arr){ int min = 0;...:设定一个初始已排序的集合(一般选择一个元素),从剩余的集合中将各个元素以此插入到初始集合中的正确位置 public static void insertionSort(int [] array){...左边的元素值都小于anchor值,右边的值都大于anchor值,递归排序左右两侧排序 //左边元素。...值索引+1---high if (end < high) { quikeSort(arr, end + 1, high); } } 归并排序

    94020
    领券