- 博客(46)
- 收藏
- 关注
原创 希尔排序算法
在示例代码中,我们首先将增量设置为序列长度的一半,然后在每次循环中将增量减半,直到增量为1。最后,我们返回排序后的结果。它通过将待排序的元素按照一定的间隔进行分组,对每组使用插入排序,然后逐渐缩小间隔,直至间隔为1,最后进行一次插入排序,完成排序。希尔排序(Shell Sort)是插入排序的一种改进版本,它通过将整个待排序的序列分割成若干个子序列来进行插入排序,从而达到减少比较和移动次数的目的。在方法中,我们使用希尔增量来进行排序,增量的初始值为数组长度的一半,然后每次循环将增量除以2,直到增量为1。
2024-09-03 00:45:00 799
原创 插入排序
第五次插入排序:已排序部分:[1, 3, 5, 7, 9],未排序部分:[4] 从未排序部分选择元素4,插入到已排序部分的合适位置,得到已排序部分:[1, 3, 4, 5, 7, 9],未排序部分:[]第四次插入排序:已排序部分:[3, 5, 7, 9],未排序部分:[1, 4] 从未排序部分选择元素1,插入到已排序部分的合适位置,得到已排序部分:[1, 3, 5, 7, 9],未排序部分:[4]由于 6 大于 5,所以它应该位于已排序序列的最后一个位置,得到序列 [2, 4, 5, 6, 1, 3]。
2024-09-01 00:30:00 1631
原创 选择排序
它的基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾,直到所有元素排序完成。选择排序的时间复杂度为O(n^2),其中n是待排序序列的长度。尽管选择排序的时间复杂度较高,但由于其排序过程简单,是一种适用于小规模数据的排序算法。选择排序是一种简单直观的排序算法。它的基本思想是每次从待排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾,直到全部数据排序完成。选择排序的时间复杂度为O(n^2),是一种较慢的排序算法。选择排序的时间复杂度是O(n^2),其中n是数组的长度。
2024-08-30 00:15:00 378
原创 冒泡排序
在每次外层循环中,内层循环会将当前未排序部分的最大元素移动到该部分的末尾。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。外层循环控制需要比较的轮数,内层循环逐个比较相邻的元素并进行交换。外层循环控制需要比较的轮数,内层循环逐个比较相邻的元素并进行交换。冒泡排序是一种简单的排序算法,其基本思想是通过相邻元素的比较和交换来将较大的元素逐步向后移动,从而实现排序。冒泡排序的基本思想是通过相邻元素之间的比较和交换来将较大的元素逐步交换到数组的末尾。,并计算了数组的大小。
2024-08-29 01:00:00 730
原创 快速排序
函数中,选择最后一个元素作为基准元素,通过比较将小于基准元素的元素移动到基准元素的左边,大于基准元素的元素移动到基准元素的右边。该方法选择最后一个元素作为基准,然后将小于基准的元素移到基准的左边,大于基准的元素移到基准的右边。快速排序是一种常用的排序算法,它通过选择一个基准元素,将数组分为两个部分,一个部分是小于基准元素的,一个部分是大于基准元素的,并且递归地对两个部分进行排序。元素作为基准,并将数组分成两部分。前后指针(交换小的在前):如图,重点讲,是前面两种做法的进化版,目前也是用的比较多的。
2024-08-28 11:16:32 933
原创 new和malloc
需要注意的是,如果使用"new"关键字分配内存空间,则需要使用"delete"关键字释放内存空间;如果使用"malloc"函数分配内存空间,则需要使用"free"函数释放内存空间。"malloc"函数:在C语言中,"malloc"函数用于动态分配内存空间。在上面的例子中,"ptr"指向了新分配的int类型的内存空间。"new"关键字:在C++中,"new"关键字用于在堆上动态分配内存空间。"new"和"malloc"都是在C++和C语言中用于动态分配内存空间的关键字/函数。类型的指针,需要进行类型转换。
2024-08-16 13:25:38 467
原创 Nodejs
官方解释:Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型, [1] 让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHPPythonPerlRuby等服务端语言平起平坐的[脚本语言]Node.js 的出现吸引了很多前端开发人员开始用 JavaScript 开发服务器代码,其异步编程风格也深受开发人员的喜爱。
2024-07-25 17:35:41 1928
原创 Vue入门
Vue (读音 /vjuː/,类似于*view*) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。渐进式框架:就是用你想用或者能用的功能特性,你不想用的部分功能可以先不用。VUE不强求你一次性接受并使用它的全部功能特性。
2024-07-25 14:52:19 1337
原创 Idea快捷键使用
2) 前期我们已经使用了很长一段时间的Idea但是没有告诉大家快捷键,是因为希望大家多进行一些基础编码,敲键盘的过程,现阶段需要同学们掌握一些快捷键,跟上编码速度。这些只是一些常用的Idea快捷键,还有很多其他的快捷键可以在Idea的设置中查看和配置。通过使用这些快捷键,可以更快、更高效地编写代码。在使用Idea编程时,有许多快捷键可以帮助提高效率。Eclipse快捷键顾名思义,Eclipse已经预设置好的一些组合按键。1) 在我们的实际开发过程中,掌握更多的快捷键,有利于我们快速编码,
2024-07-25 10:03:18 815
原创 理解嵌入式
嵌入式系统是指嵌入在其他设备中的计算机系统,通常用于完成特定的任务。与通用计算机不同,嵌入式系统的硬件和软件都是为特定任务设计和优化的,具有高度的集成性和可靠性。嵌入式系统广泛应用于各个领域,包括消费电子、汽车电子、工业控制、通信设备等。它们可以具有不同的性能要求,从低功耗、低成本的小型系统到高性能、高安全性的复杂系统。嵌入式系统的开发涉及硬件和软件两方面。硬件方面包括选择适当的处理器、存储器和接口等组件,并设计电路板和外围设备,以满足系统的需求。软件方面包括编程、配置和调试等操作,以实现系统的功能要求。
2024-07-24 19:43:36 1192
原创 C语言选择结构
选择结构是编程中的一种控制结构,它允许根据条件的不同选择不同的路径来执行代码。选择结构的由来可以追溯到早期的机器语言和汇编语言。在早期的计算机编程中,程序只能根据顺序执行,即按照代码的顺序从上到下执行。然而,随着计算机的发展,人们对程序的灵活性和功能要求也越来越高。于是,选择结构作为一种新增的控制结构被引入。选择结构最早由高级编程语言引入,例如Fortran和Algol。这些编程语言引入了if-then-else语句,允许根据条件的真假来选择不同的执行路径。
2024-07-23 11:09:08 1105
原创 C语言循环结构
定义:循环是计算机科学运算领域的用语,也是一种常见的控制流程。循环是一段在程序中只出现一次,但可能会连续运行多次的代码。循环中的代码会运行特定的次数,或者是运行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都运行一次。
2024-07-23 10:24:54 913
原创 常量和变量
在Java中,常量和变量是用于存储数据的标识符。常量是一个固定的值,一旦定义就不能被修改。在Java中,常量使用关键字final来定义,通常使用大写字母表示。例如:final int MAX_SIZE = 100;final double PI = 3.14;变量是一个可以被修改的值。在Java中,变量需要先声明,并且可以赋予不同的值。例如:int a = 10;double b = 3.14;String message = "Hello, World!";变量的
2024-07-19 09:54:17 760
原创 JAVA基本语法
包含Java定义的值。数据类型:Java支持多种数据类型,包括基本数据类型(如int、float、boolean)和引用数据类型(如String、Array),每种数据类型的取值范围和存储方式都有所不同。控制语句:Java提供了多种控制语句来控制程序的流程,包括条件语句(if-else)、循环语句(for、while、do-while)和跳转语句(break、continue)等。类和对象:Java是面向对象的编程语言,每个Java程序都包含一个或多个类,类是一种抽象的数据类型,用于定义对象的属性和行为。
2024-07-18 17:23:27 1301
原创 计算机图形学代码
遍历AET表,把配对交点区间(左闭右开)上的像素(x,y),用drawpixel(x,y,color)改写像素颜色值;遍历AET表,把ymax=1的结点从AET表中删除,并把ymax>i结点的x值递增△x;如有交点,记距离startPoint最近的交点P₁,记光线在相交物体上P₁处的反射方向和透射方向分别为direction_r、direction_t。帧缓冲区中(x,y)处亮度值替换为多边形在(x,y)处的亮度值;{计算该像素所对应多边形上的点在观察坐标系下的z坐标值Z(x,y);
2024-07-18 00:45:00 1236
原创 软件工程基础知识
软件工程的本质特性:软件工程关注于大型程序的构造,软件工程的中心课题是控制复杂性,软件经常变化,开发软件的效率非常重要,和谐的合作是开发软件的关键,软件必须有支持他的用户,在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品,消除软件危机的途径:对计算机软件有一个正确的认知,软件就是程序是错误的,充分认识到软件开发是是一种组织良好,管理严格,人员协同配合,共同完成的工程项目,推广并使用在实践中总结出来的开发软件的成功技术和方法,开发和使用更好的软件工具。
2024-07-17 19:58:25 297
原创 计算机图形学
计算机图形学主要涉及数学、计算机科学、物理学和心理学等多个学科的知识,需要掌握几何学、线性代数、计算机图形学算法、物理模型、渲染技术等相关知识。它涉及了计算机图形的表示、处理和显示等方面,主要应用于计算机图像的生成、动画、游戏开发、虚拟现实、建模和渲染等领域。图形处理:对图形数据进行各种操作和处理,如几何变换、光照、纹理映射、裁剪、曲线和曲面生成等。① 二维交互设备:键盘、鼠标、图形输入板、扫描仪、光笔、游戏杆、跟踪球、触摸屏、语音系统。② 三维交互设备:空间球、数据手套、数据衣、数据鞋、头盔、立体眼镜。
2024-07-17 19:47:04 443
原创 Shell介绍
Shell是一种命令行界面程序,常用于与操作系统进行交互。它是操作系统的外壳,提供了一种用户使用操作系统功能的方式。Shell可以理解为用户与操作系统之间的接口,用户通过输入命令来告诉操作系统要执行的操作,然后操作系统会执行相应的命令并返回结果给用户。Shell可以执行各种操作,包括文件操作、进程管理、网络通信等。Shell的命令可以通过键盘输入,也可以通过脚本文件批量执行。脚本文件是一系列命令的集合,可以用来自动化执行一些任务。
2024-07-17 19:23:54 942
原创 几种常用排序算法
排序是处理数据的一种最常见的操作,所谓排序就是将数据按某字段规律排列,所谓的字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可以针对分数排序。稳定性 在一组无序数据中,若两个待排序字段一致的数据,在排序前后相对位置不变,则称排序算法是稳定的,否则是不稳定的。(应该是原先有序的在排序中会不会出现改变)
2024-07-16 20:27:00 539
原创 几个常用的算法
是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。一句话概括一下,算法就是解决问题的操作步骤。世界是算法来控制的;但是有个前提:算力和存储都是有限的;是一种直接或者间接地调用自身的算法。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。把问题转化为规模缩小了的同类问题的子问题。
2024-07-16 17:00:39 785
原创 Qt事件处理
事件是用户和应用软件间产生的一个交互操作,由用户操作产生或者系统内部产生,通过事件循环对事件进行处理,事件也可以用来在对象间进行信息交互。. Qt平台会将系统产生的消息转换为Qt事件 .Qt事件是一个QEvent的对象 .Qt事件用来描述程序内部或外部发生的动作·任意的QObject对象都具备事件处理的能力·键盘事件:按键按下或松开 ·鼠标事件:鼠标移动。鼠标按键的按下和松开·拖放事件:用鼠标进行拖放 ·滚轮事件:鼠标滚轮滚动 ·绘屏事件:重绘屏幕的某些部分·
2024-07-15 20:15:48 753
原创 linux目录与文件相关的命令
替换命令的格式为:%s/被替换内容/替换内容/g。其中,百分号(%)表示对整个文件进行替换,s表示替换命令,斜杠(/)是分隔符,之后是被替换的内容和替换的内容,最后的g表示全局替换。2、替换快捷键:进行单次替换的快捷键是":s/要替换的文本/替换后的文本/",按下回车即可将第一个匹配的文本替换成指定的文本。如果要替换所有匹配的文本,可以在命令中添加"g"参数,即":s/要替换的文本/替换后的文本/g"。替换命令的格式为%s/查找内容/替换内容/g,其中查找内容是要被替换的文本,替换内容是替换后的文本。
2024-07-14 00:01:21 835
原创 Linux基础命令
紧接着的3*3个字符分3组,各指示此文件的读、写、执行权限,对于owner、group、others而言。:进入指定目录 绝对路径,相对路径 ./ 当前../上一级。ls -al 以详细信息方式列出所有文件信息,包含隐藏文件。who //查看当前登录用户(有可能是有多个的)的信息。who am i //查看当前执行这个命令的用户。ls –a 列出所有文件和文件夹,包含隐藏文件。ls 目录名 :查看该目录的文件信息。ls 目录名 查看该目录的文件信息。: 切到用户 home目录。第一个栏位,表示文件的属性。
2024-07-13 23:55:54 386
原创 认识linux
和windows操作系统类似,Linux是一套性能稳定的多用户网络操作系统;Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统Linux操作系统一般作为项目服务器或者c编译执行环境使用,Windows一般作为项目开发环境使用。
2024-07-13 23:42:34 385
原创 C语言函数声明和定义语法
函数定义语法: return_type function_name(parameter_list) { /* 函数体 */ return value;函数的声明通常放在头文件中,而定义则通常放在源文件中。在使用函数时,只需要包含对应的头文件,编译器就能正确识别函数的声明,从而进行函数的调用。需要注意的是,函数的声明和定义是分开的,声明只是告诉编译器函数的存在和函数的接口(参数列表和返回值类型),而定义则是实现函数的具体逻辑。C语言中,函数的声明和定义有一些规定的语法。
2024-07-13 23:30:54 261
原创 结构体尺寸
结构体的大小可能会受到编译器的优化和对齐规则的影响,编译器可能会在结构体中插入一些额外的填充字节以对齐结构体的成员变量,以提高内存访问效率。因此,结构体的实际大小可能会大于成员变量大小的总和,如果你需要确切地了解结构体的内存布局和对齐方式,可以使用。将返回结构体的总字节数,包括所有成员变量的大小以及可能的填充字节。属性等进一步控制和查询结构体的大小和对齐方式。返回的是给定类型或变量的字节大小。运算符来计算结构体的大小,C 语言中,我们可以使用。
2024-07-12 17:35:11 231
原创 QT 的基础控件的使用
MDI 允许在一个主窗口中同时显示多个子窗口,每个子窗口可以独立地进行操作,但共享相同的菜单栏、工具栏和其他资源。:在一个应用程序中管理多个打开的文档,每个文档都有自己的子窗口。)内停靠和浮动的子窗口。:在 MDI 界面中,可以更容易地实现状态同步,比如当一个子窗口被选中时,主窗口的菜单和工具栏可以反映当前活动文档的状态。:所有的子窗口可以共享相同的菜单、工具栏和其他界面元素,这有助于减少应用程序的资源消耗和提高用户体验的一致性。中分离出来成为独立的浮动窗口,也可以将其重新拖回 MDI 区域。
2024-07-12 14:26:16 920
原创 Flex布局(弹性盒)
Flex 布局也叫,是浏览器,非常适合布局,提供了强大的空间分布和对齐能力。Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。
2024-07-11 20:04:34 177
原创 初识HTML
HTML(Hypertext Markup Language)超文本标记语言,是一种编写网页(html文档)的技术。主要通过HTML标签对网页中的文本、图片、音频、视频等内容进行描述,在浏览器里面展示不同的效果。所以我们学习html,就是学习各种标签,通过浏览器渲染页面效果。
2024-07-11 19:24:45 156
原创 QT 的信号与槽
1.在需要接收信号的类中 声明槽函数//声明槽函数2.在xxx.cpp 中实现槽函数ui->label->setText("设置标签成功!!!666");3.进行信号与槽的关联//信号还是用pushbutton定义函数信号 clicked() 连接自己槽函数// 发送者:ui->pushButton// 信号名称:clicked(),不是我们自定义,也就是不用我们发信号//接收者: this表示当前窗体// 槽函数: setLabelValue。。。。");
2024-07-11 19:08:42 1376
原创 自增减运算符
+ 自增 1, --自减 1单独使用,前缀后缀没区别;非单独使用:前缀,先+1、-1,再用;后缀,先用,再+1、-1只适用变量,不能用于常量、表达式。优先级,高于算数、比较、赋值。后缀高于前缀。
2024-07-11 16:15:17 298
原创 QT制作一个简单登录界面
鼠标右键点击工程目录结构下的img.qrc,会弹出一个菜单,菜单上有添加现有文件的选项,点击,弹出文件对话框,选择我们要添加的资源文件,确认即可。ima.qrc下面就会多出我们添加的资源文件,点击资源文件,左边便会预览资源文件。这个按钮时,会产生一个clicked()的信号,经过的绑定之后, Dialog的reject()槽函数会来响应这个信号,reject()会关闭当前的对话框。本例程在这里简单进行信号与槽的连接,实现点击取消的时候,关闭登录对话框,更多关于信号和槽的介绍,在后面的课程会讲解。
2024-07-11 11:23:24 1129
原创 子类继承父类的属性和方法
继承允许我们创建一个新的类(子类),它继承另一个类(父类)的属性和方法。这使得代码重用和扩展变得更加容易。在Java中,子类可以继承父类的构造方法。当子类创建对象时,会自动调用父类的构造方法来初始化从父类继承的成员变量和方法。子类可以通过super关键字来调用父类的构造方法。在上面的例子中,Animal类有一个带有一个参数的构造方法,它接受一个name(名字)参数并将其赋值给name成员变量。Dog类继承Animal类,并新增了一个age(年龄)成员变量。
2024-07-11 10:58:12 1086
原创 多态 C++中的多态
多态是OOP的第三大特性之一,它允许我们使用父类类型的引用来引用子类对象,并在运行时根据对象的实际类型来执行相应的方法。这通常通过虚函数和纯虚函数来实现。C++中的多态主要通过函数重载(Overloading)、函数覆盖(Overriding)以及动态绑定(Dynamic Binding)等机制实现。这些机制允许我们使用相同的函数名来执行不同的操作,或者根据对象的实际类型来调用不同的函数实现。下面我将分别解释重载、覆盖和隐藏的原理。
2024-07-11 10:24:04 801
原创 封装与数据隐藏
封装是OOP的核心概念之一,它强调将数据和操作数据的方法捆绑在一起,形成一个个独立的对象。封装有助于隐藏对象的内部状态和实现细节,仅通过对象提供的公共接口与外界进行交互。构造一个类,把对象的属性封装起来,同时提供一些可以被外界访问属性的方法。可以使用Python中的类来实现。成员)来访问和操作对象,而无法直接访问对象的内部状态。这样,类的用户就只能通过类的公共接口(即。方法供外界访问和修改这些属性。属性前加上了一个下划线。,表示这些属性是私有的,提醒外界不要直接访问。在C++中,我们通过将类的成员设置为。
2024-07-11 10:09:35 205
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人