这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2020-4/homework/11808
这个作业的目标 加强对数组的理解
学号 20209220

本周作业

2.1 完成PTA作业,并给出编程题完成截图



2.2 题目:快速寻找满足条件的两个数

1.根据三种解法给出相应的代码,并给出测试数据

  • 解法一



  • 解法二



  • 解法三



2.请说明三种算法的区别是什么?你还可以给出更好的算法吗?

首先穷举法的复杂度是最高的,效率最低,解法二比较解法一,复杂度低了,但是效率还是一样的,二分法查找比较

前两者有一定的提升,不论是效率还是复杂度上。

我还了解道构造hash表,但是我写不出来代码,构造hash表用空间换取时间。

2.3 请搜索有哪些排序算法,并用自己的理解对集中排序算法分别进行描述

一.交换排序

  • 1.冒泡排序:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。

  • 2.快速排序:选取一个基准元素,通常为数组最后一个元素(或者第一个元素)。从前向后遍历数组,当遇到小于基准元素的元素时,把它和左边第一个大于基准元素的元素进行交换。在利用分治策略从已经分好的两组中分别进行以上步骤,直到排序完成。

二.插入排序

  • 1.直接插入排序: 和交换排序不同的是它不用进行交换操作,而是用一个临时变量存储当前值。当前面的元素比后面大时,先把后面的元素存入临时变量,前面元素的值放到后面元素位置,再到最后把其值插入到合适的数组位置

  • 2.希尔(shell)排序: 在直接插入排序的思想下设置一个最小增量dk,刚开始dk设置为n/2。进行插入排序,随后再让dk=dk/2,再进行插入排序,直到dk为1时完成最后一次插入排序,此时数组完成排序。

三.选择排序

  • 1.直接选择排序: 依次选出数组最小的数放到数组的前面。首先从数组的第二个元素开始往后遍历,找出最小的数放到第一个位置。再从剩下数组中找出最小的数放到第二个位置。以此类推,直到数组有序。

  • 2.堆(Heap)排序: 先把数组构造成一个大顶堆(父亲节点大于其子节点),然后把堆顶(数组最大值,数组第一个元素)和数组最后一个元素交换,这样就把最大值放到了数组最后边。把数组长度n-1,再进行构造堆,把剩余的第二大值放到堆顶,输出堆顶(放到剩余未排序数组最后面)。依次类推,直至数组排序完成。

四.归并排序: 归并算法应用到分治策略,简单说就是把一个答问题分解成易于解决的小问题后一个个解决,最后在把小问题的一步步合并成总问题的解。这里的排序应用递归来把数组分解成一个个小数组,直到小数组的数位有序,在把有序的小数组两两合并而成有序的大数组。

2.4 请给出本周学习总结

1 学习进度条

周/日期 这周所花的时间 代码行 学到的知识点简介 目前比较迷惑的问题
第一周/3.5 1天半 120 文件读取 函数运用不熟
第二周/3.12 2天 150 数组 数组复杂应用不会

2 累积代码行和博客字数

3 学习内容总结和感悟

  • 学习了数组,这样有些代码就可以简化了,可以更好的解决问题。
  • 感觉已经落后别人挺多的了,要努力学习了。

C语言II博客作业02的更多相关文章

  1. c语言1博客作业02

    c语言1博客作业02 这个作业属于哪个课程 C语言程序设计 这个作业的要求在哪 [作业要求](https://edu.cnblogs.com/campus/zswxy/SE2019-2/homewor ...

  2. C语言I-2019博客作业02

    这个作业属于哪个课程 C语言程序设计I 这个作业要求在哪里 C语言I-2019秋作业02 我在这个课程的目标是 学会编程及提问的技能 这个作业在哪个具体目标方面帮助我实现目标 深入了解C语言程序设计中 ...

  3. C语言I博客作业02

    这个作业属于那个课程  C语言程序设计I 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/8656 我在这个课程的目标 ...

  4. 本次作业统一标题:C语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8655 我在这个课程的目标是 ...

  5. c 语言I博客作业02

    这个作业属于哪个课程 C语言程序设计1 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/8687 我在这个课程的目标是 ...

  6. C语言II博客作业01

    这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-4 这个作业要求在哪里 https://edu.cnblogs.com/campus/zs ...

  7. c语言l博客作业02

    问题 答案 这个作业属于哪个课程 C语言程序设计l 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-2/homework/8687 我在这个 ...

  8. C语言I博客作业12—学期总结

    一.我学到的内容 二.我的收获(包括我完成的所有作业的链接+收获)不能只有作业链接,没有收获 作业次数 作业链接 第一次 C语言I博客作业01 第二次 C语言I博客作业02 第三次 C语言I博客作业0 ...

  9. c语言1博客作业12-学期总结

    一.我学到的内容 二.收获总结 2.1我的收获 链接: c语言1博客作业01:https://www.cnblogs.com/dy-985211/p/11578914.html c语言1博客作业02: ...

随机推荐

  1. MySQL 连接管理

    目录 MySQL 连接方式 TCP/IP 连接 Socket 连接 MySQL 连接工具 自带连接工具 第三方连接工具 MySQL 连接方式 TCP/IP 连接 # TCP/IP 连接 mysql - ...

  2. Linux-输出/输入重定向

    目录 重定向的分类 输出重定向 将标准输出重定向到文件 将标准输出追加重定向到文件 将错误输出重定向到文件 将标准输出和错误输出都重定向到文件 将错误输出重定向到黑洞文件 输入重定向 重定向的分类 名 ...

  3. 4.Direct交换机之使用指定routingkey完成日志记录场景

    标题 : 4.Direct交换机之使用指定routingkey完成日志记录场景 目录 : RabbitMQ 序号 : 4 const string logOthersQueueName = " ...

  4. 1.nginx安装和基本配置

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-07-10 20:56:10 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  5. 创建AVL树,插入,删除,输出Kth Min

    https://github.com/TouwaErioH/subjects/tree/master/C%2B%2B/PA2 没有考虑重复键,可以在结构体内加一个int times. 没有考虑删除不存 ...

  6. codeforces - 978D【思维】

    D. Almost Arithmetic Progression time limit per test 1 second memory limit per test 256 megabytes in ...

  7. 2021 从零开始打造一个自己的 UI 组件库

    2021 从零开始打造一个自己的 UI 组件库 refs GUI https://github.com/xgqfrms/gui/ https://www.npmjs.com/package/@xgqf ...

  8. chroot vs docker

    chroot vs docker chroot Linux A chroot on Unix operating systems is an operation that changes the ap ...

  9. auto embedded component in an online code editor

    auto embedded component in an online code editor how to auto open a component in the third parts onl ...

  10. 2020 web developer roadmap

    2020 web developer roadmap https://github.com/kamranahmedse/developer-roadmap https://roadmap.sh/ ht ...