CS-第 3 周

算法是解决问题的指令集,其执行速度和内存占用各不相同。编程中,许多算法都基于数据搜索和排序。本文将介绍几种数据检索和排序算法。

线性搜索

假设有一个数组 [20, 500, 10, 5, 100, 1, 50],需要查找数字 50。线性搜索算法会逐个检查数组中的每个元素,直到找到目标值或遍历完整个数组。

CS-第 3 周

算法流程图如下:

CS-第 3 周

线性搜索的伪代码如下:

检查每个元素:    如果找到目标值:        返回 true返回 false

登录后复制

C语言实现:

#include #include int main(void){    int numbers[] = {20, 500, 10, 5, 100, 1, 50};    int n = get_int("number: ");    for (int i = 0; i < 7; i++)    {        if (numbers[i] == n)        {            printf("true");            return 0;        }    }    printf("false");    return 0;}

登录后复制

线性搜索的时间复杂度为 O(n)。

二分查找

二分查找算法适用于已排序的数组。它通过不断缩小搜索范围来提高效率。

二分查找的伪代码如下:

如果数组为空:    返回 false如果中间元素等于目标值:    返回 true如果中间元素大于目标值:    在左半部分继续查找否则:    在右半部分继续查找

登录后复制

二分查找的时间复杂度为 O(log n)。

大O表示法

大O表示法用于描述算法的时间复杂度。下图展示了不同时间复杂度的曲线:

CS-第 3 周

x轴表示输入数据量,y轴表示求解时间。O(log n) 表示最优时间复杂度,O(n²) 表示最差时间复杂度。

排序算法

排序算法用于将无序数据转换为有序数据。已排序的数据可以提高搜索效率,例如二分查找。

选择排序

选择排序算法的伪代码如下:

对于每个元素:    找到剩余元素中的最小值    将最小值与当前元素交换

登录后复制

选择排序的时间复杂度为 O(n²),无论数据是否已排序。

CS-第 3 周

冒泡排序

冒泡排序算法通过重复比较和交换相邻元素来排序数据。

冒泡排序算法的伪代码如下:

重复 n-1 次:    对于每个元素:        如果相邻元素顺序错误:            交换它们    如果未进行任何交换:        结束排序

登录后复制

冒泡排序的时间复杂度在最坏情况下为 O(n²),在最好情况下为 O(n)。

本文基于cs50x 2024源码。

以上就是CS-第 3 周的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2446559.html

(0)
上一篇 2025年3月3日 16:35:31
下一篇 2025年2月23日 14:31:47

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • c语言函数的定义调用声明格式怎么搞

    C语言函数包含定义、调用和声明。函数定义指定函数名、参数和返回类型,函数体实现功能;函数调用执行函数并提供参数;函数声明告知编译器函数类型。值传递用于参数传递,注意返回类型,保持一致的代码风格,并在函数中处理错误。掌握这些知识有助于编写优雅…

    2025年3月3日
    200
  • c语言函数的定义和调用一览

    C语言函数定义包括指定返回值类型、函数名、参数列表和函数体。调用函数只需用函数名加上参数。参数传递默认按值传递,指针参数除外。函数原型声明函数信息,提高可读性。递归函数自调用,需有终止条件。性能优化可使用内联函数或宏定义减少函数调用开销。 …

    2025年3月3日
    200
  • c语言函数定义和调用的规则是什么

    C语言函数由参数列表、函数体、返回值类型和函数名组成。函数调用时,参数通过值传递机制复制给函数,不会影响外部变量。指针传递则直接传递内存地址,修改指向的内容会影响外部变量。函数原型声明用于告知编译器函数签名,避免编译错误。栈空间用于存储函数…

    2025年3月3日
    200
  • c语言函数指针和指针函数是什么?有什么区别?

    函数指针是指向函数的指针,而指针函数是返回指针的函数。函数指针指向函数,用于选择和执行不同的函数;指针函数返回指针,指向变量、数组或其他函数;使用函数指针要注意参数匹配和检查指针空值;使用指针函数要注意内存管理,释放动态分配的内存;理解两者…

    2025年3月3日
    200
  • c语言函数定义格式有哪些

    C语言函数定义的关键元素包括:返回类型(定义函数返回的值)、函数名(遵循命名规范,决定作用域)、参数列表(定义函数接受的参数类型、数量和顺序)和函数体(实现函数的逻辑)。明确这些元素的意义和微妙关系至关重要,能帮助开发者避免“坑”,编写更高…

    2025年3月3日
    200
  • c语言函数括号里面指针参数有哪些?

    C 语言函数的指针参数直接操作调用者传递的内存区域,包括指向整数、字符串或结构体的指针。使用指针参数时,需要谨慎修改指针指向的内存,以避免出错或内存问题。对于指向字符串的双重指针,修改指针本身会导致指向新字符串,需要注意内存管理。处理指向结…

    2025年3月3日
    200
  • 如何用c语言函数指针求一维数组最大值教程

    函数指针的灵活应用:利用比较函数寻找数组最大值。首先,定义比较函数类型 CompareFunc,再编写比较函数 compareMax(a, b)。findMax 函数接受数组、数组大小和比较函数参数,使用比较函数循环比较数组元素找到最大值。…

    2025年3月3日
    200
  • c语言函数指针作为返回值怎么用

    函数指针可以作为返回值,实现根据不同输入返回不同函数的机制。通过定义函数类型并根据选择返回相应的函数指针,可以实现动态调用函数,增强代码的灵活性。但要注意函数指针类型的定义、异常处理和内存管理,以确保代码的稳健性。 C语言函数指针返回值:玩…

    2025年3月3日
    200
  • c语言函数库在什么位置?c语言函数库怎么添加?

    C语言函数库是一个包含各种函数的工具箱,这些函数被组织在不同的库文件中。添加函数库需要通过编译器的命令行选项来指定,例如 GCC 编译器使用 -l 选项,后跟库名的缩写。如果库文件不在默认搜索路径下,则需要使用 -L 选项指定库文件路径。库…

    2025年3月3日
    200
  • 鸿蒙系统和iOS系统哪个更好

    对于普通用户来说,iOS 系统通常是更好的选择。鸿蒙系统是一个开源操作系统,专注于跨平台连接,生态系统较新,应用程序数量有限;iOS 系统是闭源操作系统,生态系统高度整合,应用程序数量庞大。iOS 系统界面清晰直观,手势控制流畅,但定制选项…

    2025年3月3日
    200

发表回复

登录后才能评论