Programming Abstractions in C阅读笔记:p308-p311

news2024/11/19 1:19:08

《Programming Abstractions in C》学习第76天,p308-p311总结,总计4页。

一、技术总结

1.快速排序伪代码

#include <stdbool.h>

static int Partition(int array[], int n);

/*
 * Implementation notes: SortIntegerArray
 * --------------------------------------
 * This implementation of SortIntegerArray uses the Quicksort
 * algorithm, which begins by "partitioning" the array so that
 * all elements smaller than a designated pivot element appear
 * to the left of a boundary and all equal or larger values
 * appear to the right. Sorting the subarrays to the left and
 * right of boundary ensures that the entire array is sorted.
 */

void SortIntegerArray(int array[], int n) {
    int boundary;

    if (n < 2) {
        return;
    }
    boundary = Partition(array, n);
    SortIntegerArray(array, boundary);
    SortIntegerArray(array + boundary + 1, n - boundary - 1);
}

/*
 * Function: Partition
 * Usage: boundary = Partition(array, n);
 * --------------------------------------
 * This function rearranges the elements of array relative to
 * a pivot value, which is taken from array[0]. The partition
 * function returns a boundary index such that array[i] < pivot
 * for all i < boundary, array[i] == pivot for i == boundary,
 * and array[i] >= pivot for all i > boundary.
 */

static int Partition(int array[], int n) {
    int lh, rh, pivot, temp;

    pivot = array[0];
    lh = 1;
    rh = n - 1;

    while (true) {
        while (lh < rh && array[rh] >= pivot) {
            rh--;
        }
        while (lh < rh && array[lh] < pivot) {
            lh--;
        }
        if (lh == rh) {
            break;
        }
        temp = array[lh];
        array[lh] = array[rh];
        array[rh] = temp;
    }
    if (array[lh] >= pivot) {
        return 0;
    }
    array[0] = array[lh];
    array[lh] = pivot;
    return lh;
}

2.快速排序时间复杂度

平均时间复杂度:O(NlogN), 最坏时间复杂度:O(N^2)。

二、英语总结

1.fairly是什么意思?

p308, Tony Hoare’s approach to partioning is fairly easy to explain in English。

答:

(1)fair: adj. fair比较常用的意思是:treating someone in a way that is right or reasonable(公正的,公平的);但也有一个用得比较少的意思: quite large。

(2)fairly: fair + ly。adv. more than average, but less than very(相当地)。

2.coincide是什么意思?

p308, Move the rh index to the left until it either coincides with lh or points to an element containing a value that is small with respect to the pivot。

答:com-(together) + incidere(to fall upon)。vi. to come together in position / to happen at or near the same time。

3.roughly是什么意思?

答:

(1)rough: adj. a. not even(均匀) or smooth(光滑), often because of being in bad condistion。b. not exact or detailed(大致)。

p311, Moreover the running times for both algorithms appear to grow in roughly the same way。

4.appear to 是什么意思?

答:vi. to seem(看起来,似乎)

三、其它

英语阅读要想快速理解,就得尽可能把每个单词的所有意思都记录,如上面的:fairly——最常用的意思就是“公平地”,但书中明显不是这个意思,而是“quite large(相当地)”,平时用得少,没有在意,导致整个句子无法理解。还有rough也是,常用意思是"not smooth(粗糙的)",但也有“not exact or detailed(大致的)”之意。

四、参考资料

1. 编程

(1)Eric S.Roberts,《Programming Abstractions in C》:https://book.douban.com/subject/2003414

2. 英语

(1)Etymology Dictionary:https://www.etymonline.com

(2) Cambridage Dictionary:https://dictionary.cambridge.org

在这里插入图片描述

欢迎搜索及关注:编程人(a_codists)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实践航拍小目标检测,基于YOLOv8全系列【n/s/m/l/x】参数模型开发构建无人机航拍场景下的小目标检测识别分析系统

关于无人机相关的场景在我们之前的博文也有一些比较早期的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《deepLabV3Plus实现无人机航拍目标分割识别系统》 《基于目标检测的无人机航拍场景下小目标检测实践》 《助力环保河道水质监测&#xff0c;基于yolov…

Django后端开发——中间件

文章目录 参考资料中间件注册中间件settings.pymiddleware/mymiddleware.pymysite3/views.pymysite3/urls.py 练习 参考资料 B站网课&#xff1a;点击蓝色字体跳转 或复制链接至浏览器&#xff1a;https://www.bilibili.com/video/BV1vK4y1o7jH?p39&vd_source597e21cf34f…

嵌入式Linux中GPIO设置的一些基本指令和步骤

一、GPIO的介绍 嵌入式Linux中的GPIO&#xff08;General Purpose Input/Output&#xff0c;通用输入/输出&#xff09;是一种常用的接口&#xff0c;允许开发者直接控制硬件设备的某些引脚&#xff0c;进行诸如LED控制、传感器读取、设备状态监测等任务。 二、设置步骤和示例…

08 yum和git

什么是软件包 安装软件&#xff0c;一个通常的办法就是下载程序的源代码进行编译。这种太麻烦&#xff0c;于是一些人把常用软件编译好&#xff0c;做成软件包放在服务器上&#xff0c;通过包管理器可以很方便的得到这个软件包安装&#xff0c;就好比手机上的应用商店 yum&am…

LeetCode 刷题 [C++] 第121题.买卖股票的最佳时机

题目描述 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的…

基于springboot+vue的中国陕西民俗网

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

ASUS华硕ROG冰刃6双屏GX650RX工厂模式原厂Windows11系统 带MyASUS WinRE恢复重置功能 恢复出厂开箱状态

华硕冰刃6笔记本电脑oem预装Win11系统&#xff0c;适用型号&#xff1a; NR2202RX_GX650RX、NR2202RW_GX650RW NR2202RM_GX650RM、NR2202RS_GX650RS 链接&#xff1a;https://pan.baidu.com/s/1nnGlmnqJ_YZIOX7RQXjhuQ?pwd79hm 提取码&#xff1a;79hm 原装出厂系统带有A…

大数据技术(一)

大数据技术概述 大数据技术层面及其功能 数据采集与预处理 利用ETL(extract-transform-load)工具将分布的、异构数据源中的数据&#xff0c;如关系数据、平面数据文件等&#xff0c;抽取到临时中间层后进行清洗、转换、集成&#xff0c;最后加载到数据仓库或数据集市中&…

【leetcode】用栈实现队列

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家刷题&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 点击查看题目 思路: 在做此题之前&#xff0c;我们先要实现栈&#xff0c;这在上个博客中已经写过&#xf…

Doris【数据模型】

一、数据模型简介 在 Doris 中&#xff0c;数据以表&#xff08;Table&#xff09;的形式进行逻辑上的描述。 一张表包括行&#xff08;Row&#xff09;和列&#xff08;Column&#xff09;。Row 即用户的一行数据。Column 用于描述一行数据中不同的字段。 Column 可以分为两…

“视频剪辑新风尚:批量操作,背景虚化,聚焦视频主题!“

在数字时代&#xff0c;视频成为了最直观、最生动的信息表达方式。但是&#xff0c;面对大量的视频素材&#xff0c;如何快速有效地进行剪辑&#xff0c;突出视频主题&#xff0c;成为了许多创作者和编辑者的难题。 首先&#xff0c;我们要打开【视频剪辑高手】进入主页面之后…

【研发日记】Matlab/Simulink技能解锁(四)——在Simulink Debugger窗口调试

前言 见《【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(二)——在Function编辑窗口Debug》 见《【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug》 Block断点 前文在Simulink编辑窗口…

【蓝桥杯】错误票据

今天是2024年3月1号&#xff0c;蓝桥杯比赛还有一个月的时间&#xff0c;虽说自己不指望拿奖吧&#xff0c;但是还是有些莫i名的焦虑&#xff0c;这道题目都做不出来&#xff0c;感觉自己真的有点菜啊&#xff01;但是还好啦&#xff0c;我觉得是因为我没有题感&#xff0c;慢慢…

(六)Dropout抑制过拟合与超参数的选择--九五小庞

过拟合 即模型在训练集上表现的很好&#xff0c;但是在测试集上效果却很差。也就是说&#xff0c;在已知的数据集合中非常好&#xff0c;再添加一些新数据进来效果就会差很多 欠拟合 即模型在训练集上表现的效果差&#xff0c;没有充分利用数据&#xff0c;预测准确率很低&a…

对缓冲区的初步认识——制作进度条小程序

对缓冲区的初步认识--进度条小程序 前言预备知识回车和换行的区别输出缓冲区/n 有清空输出缓冲区的作用stdout是什么&#xff1f;验证一切皆文件为什么是\n行刷新&#xff1f; 倒计时程序原理 代码实现为什么这里要强制刷新&#xff1f;没有会怎样&#xff1f;为什么是输出的是…

ABAP - SALV教程07 斑马纹显示和SALV标题

SALV设置斑马纹和标题 METHOD set_layout.DATA: lo_display TYPE REF TO cl_salv_display_settings. * 取得显示对象lo_display co_alv->get_display_settings( ).* 设置ZEBRA显示lo_display->set_striped_pattern( X ). * 设置Titlelo_display->set_list_he…

内存空间担保机制

什么是内存空间担保机制&#xff1f; 内存空间担保机制&#xff08;Memory Space Guarantee&#xff09;是垃圾回收&#xff08;Garbage Collection&#xff09;算法中的一种策略。它用于在进行垃圾回收过程&#xff08;如Minor GC或Full GC&#xff09;时&#xff0c;确保老年…

Linux创建,删除用户

Linux创建&#xff0c;删除用户 怎么登陆xshell创建用户设置密码 删除用户 我找了好久市面上的资料&#xff0c;我觉得写得不好&#xff0c;所以自己写一个 怎么登陆xshell ssh用户名ip地址 创建用户 adduser 用户名 设置密码 passwd 用户名 删除用户 userdel -r 用户…

【小尘送书-第十一期】编程的基石,开发的核心:《算法秘籍》

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

利用小蜜蜂AI智能问答ChatGPT+AI高清绘图生成图文故事案例

利用小蜜蜂AI智能问答ChatGPTAI高清绘图生成图文故事案例 这段时间利用小蜜蜂AI网站做了一些编程、绘图以及数据分析方面的案例。再过几个月&#xff0c;我的大孙子就要出生了。我要用小蜜蜂AI智能问答和AI高清绘图为大孙子生成一个1-9的数字图文故事。 小蜜蜂AI网站可以扫如…