VC冒泡排序、递归型冒泡排序和递归快速排序源代码

【菜科解读】
对于冒泡排序,大家肯定都熟知,每一轮的冒泡都将最大的数排到最前面,每一轮的时间复杂度是O(n),如果要排序的数组大小为n,要经过n轮才能将数组中所有元素排序,所以总共的时间复杂度为O(n2)。
关于冒泡排序的源码如下:
迭代型冒泡排序#include #define length(array) sizeof(array)/sizeof(array[0])#define true 1#define false 0void BubbleSort(int *a, int len) //待排数组a以及它的长度len int ordered = false; int temp, i; while(len && !ordered) ordered = true; //也许一趟排序过程中没有发生交换,说明数组已有序 for(i = 1; i a[i]) ordered = false; temp = a[i]; a[i] = a[i-1]; a[i-1] = temp; len--;int main() int a[5] = {5,1,2,3,4}; int i = 0; int len = length(a); BubbleSort(a,len); for(i = 0; i 递归型冒泡排序#include #define length(array) sizeof(array)/sizeof(array[0])#define true 1#define false 0int Sort(int *a, int len) int ordered = true; //也许一趟排序过程中没有发生交换,说明数组已有序 int temp, i; for(i = 1; i a[i]) ordered = false; temp = a[i]; a[i] = a[i-1]; a[i-1] = temp; return ordered;void BubbleSort(int *a, int len) //冒泡排序的递归算法 if(len == 1) //如果只有一个元素,它就是最大的元素,无须在冒泡 return; else int ordered = Sort(a,len); //选出最大的元素,将所有比最大元素小的元素放在最大元素的左边,而快排是将使用一个枢纽元素,将比枢纽元素大的放在枢纽右边,小的放在左边 if(ordered) //如果一趟冒泡,没有交换元素,说明已有序 return; BubbleSort(a,len-1); //递归冒泡出最大元素后面的所有元素,如果快排将作为快排的左递归 //如果快排会有右递归int main() int a[10] = {10,1,5,2,4,3,6,7,9,8}; int i = 0; int len = length(a); BubbleSort(a,len); for(i = 0; i 递归快速排序#include #define length(array) sizeof(array)/sizeof(array[0])#define true 1#define false 0int Sort(int *a, int low, int high) int pivot = a[low]; //这里每次的枢纽元素都取了待排数组的第一个元素,记住是a[low],而不是a[0] if(low = pivot && low = high) return ; else int mid = Sort(a,low,high); //划分子递归数组 QuickSort(a,low,mid-1); //左递归 QuickSort(a,mid+1,high); //右递归,一旦右递归mid+1=high,将退化成冒泡,递归深度将变成n,n为数组长度int main() int a[5] = {3,1,5,2,4}; int i = 0; int len = length(a); QuickSort(a,0,len-1); for(i = 0; i 冒泡,排序,、,递归型,和,递归,快速,源代码,
前端开发IDE、JS神器WebStorm5详细介绍
WebStorm却让我眼前一亮,虽然公司项目所用的开发环境是eclipse+aptana(主要是方便团队协作和工程调试),但是其他时间我都会学习使用WebStorm。
WebStorm有什么功能?下面我把WebStorm的功能大致罗列一下(这里只说Javascript编辑的功能,其他的html和css之类的大家自己发掘,记得WebStorm可是支持Zencoding的哟,帅~):1、智能的代码补全:支持不同浏览器的提示,还包括所有用户自定义的函数(项目中)代码补全包含了所有流行的库,比如:JQuery, YUI, Dojo, Prototype, Mootools and Bindows。
2、代码格式化:代码不仅可以格式化,而且所有规则都可以自己来定义:3、代码编写中的html提示:大家经常在js代码中编写html代码,一般来说十分痛苦,不过有了智能提示,就爽多了。
而且html里面还能有js提示4、代码导航和用法查询:只需要按着Ctrl键点击函数或者变量等,就能直接跳转到定义:可以全项目查找函数或者变量,还可以查找使用并高亮:5、代码重构(这个操作有些像Resharper,熟悉Resharper的用户应该上手很快):支持的有重命名、提取变量/函数、内联变量/函数、移动/复制、安全删除等等,比如:内联变量重构之后变为:6、代码检查和快速修复:可以快速找到代码中的错误或者需要优化的地方,并给出修改意见,快速修复。
7、代码调试:8、代码结构浏览:可以快速浏览和定位9、代码折叠:10、包裹或者去掉外围代码:去掉之后就成了:怎么样,这些功能足够多了吧,其中的调试和重构包含了很多,这个还需要你来自己挖掘。
12在本页阅读全文 本文导航 第1页: 首页 第2页: WebStorm的强大之处 前端,开发,IDE,、,神器,WebStorm5,详细,介绍
DeepSeek
在多种任务中,如视觉问答、光学字符识别、文档/表格/图表理解及视觉基础等方面,DeepSeek-VL2 展现出卓越的能力。
这一模型系列共有三种变体:DeepSeek-VL2-Tiny、DeepSeek-VL2-Small 和 DeepSeek-VL2,它们分别拥有 1.0B、2.8B 和 4.5B 的激活参数。
与现有的开源密集型和基于 MoE 的模型对比,DeepSeek-VL2 在具有同等甚至更少激活参数的情况下,仍可实现竞争性乃至领先的性能。
二、部署流程基础环境的最低配置要求如下:首先,执行此命令以查看系统版本信息,它将从所有配置的源中获取最新的软件包列表而不实际安装或升级任何软件包,是安装新软件包或进行软件包升级前推荐的操作,因为它能保证你获取到的是最新的软件包版本。
接下来,我们将使用以下命令安装 Vim 文本编辑器,其中 参数表示自动对所有提示做出“是”的响应,因此在安装过程中无需手动确认。
Vim 是一款功能强大的文本编辑器,广泛应用在编程和配置文件的编辑工作中。
为了保障安全,建议在修改 sources.list 文件之前先对其进行备份:上述命令将当前的 sources.list 文件复制成一个名为 备份文件。
这样做是有益的,因为在编辑 sources.list 文件时有可能出现错误,从而导致无法安装或更新软件包。
如有备份,则在发生问题时可以轻松恢复原始文件。
使用 Vim 打开 sources.list 文件进行编辑。
在这个文件中,APT(Advanced Package Tool)列出了用于安装和更新软件包的各种软件源。
通过对这个文件进行编辑,你可以添加新的软件源、调整已有软件源的优先级或停用某些软件源。
在 Vim 中,可以使用方向键移动光标,按 i 键进入插入模式进行文本编辑,Esc 键退出插入模式,若要保存更改并退出 Vim,键入 :wq,而 若要不保存更改直接退出则输入 :q!。
当编辑 sources.list 文件时,请务必清楚自己的操作,尤其是当你打算添加新的软件源时。
不正确的源可能导致软件包安装失败或引发系统安全问题。
如果你对此不确定,最好是查找并使用可靠的源信息,或者向有经验的 Linux 用户咨询。
接着,我们用 Vim 打开 sources.list 文件,并将其内容替换为配置国内阿里源所需的代码。
安装常用软件和工具:一旦完成 sources.list 文件的编辑,你将会看到国内 apt 源已被成功替换,现在可以正常安装 apt 软件和工具。
例如,下载 CUDA Keyring 的步骤如下:该命令用于下载 CUDA 的 GPG 密钥环,用于验证 CUDA 软件包的签名,这对于确保所安装软件包的安全性至关重要。
然后安装下载的 CUDA Keyring:使用 命令来安装下载的密钥环,这对于 apt 能够验证从 NVIDIA 仓库下载的软件包签名是必不可少的。
如果有必要,可以删除旧的 apt 密钥(前提是该密钥与 CUDA 相关,并且你想从系统中移除以避免混淆)。
但在大多数情况下,如果仅是安装 CUDA 并使用 NVIDIA 提供的最新密钥环,此步骤是可以略过的。
接下来,你需要更新 apt 的软件包列表,以便包含通过 添加的 NVIDIA 仓库中的软件包。
安装 NVIDIA CUDA Toolkit 12.1 的成功标志如下:若需安装特定版本的 CUDA Toolkit(比如 cuda-12-1,如果有提供),或者你选择从 NVIDIA 官方网站下载 CUDA Toolkit 的 .run 安装程序进行手动安装,请务必查阅 NVIDIA 的官方文档或 Ubuntu 的 NVIDIA CUDA 仓库以获得最准确的包名和安装指令。
安装成功后,你需要配置 NVIDIA CUDA Toolkit 12.1 的系统环境变量:为此,请编辑 ~/.bashrc 文件,并插入相应的环境变量设置。
随后,激活 ~/.bashrc 文件并检查 cuda 系统环境变量。
第三步,安装 Miniconda:首先,使用 wget 命令从 Anaconda 的官方仓库下载 Miniconda 的安装脚本。
Miniconda 是 Anaconda 的轻量级发行版,主要包括用于安装和管理 Python 包的核心组件。
运行 Miniconda 的安装脚本:使用 bash 命令运行下载的 Miniconda 安装脚本,这将启动 Miniconda 的安装过程。
安装过程中,你需按 Enter 键确认,两次输入 yes 确认许可协议和 Miniconda 初始化的选择。
安装成功的界面如下所示。
请注意以下事项:- 确保你的系统是 Linux x86_64 架构,因为下载的 Miniconda 版本适用于此类架构。
- 在运行安装脚本前,可能需要使用 chmod +x Miniconda3-latest-Linux-x86_64.sh 命令赋予脚本执行权限。
- 安装过程中,你会被询问是否同意许可协议以及是否希望初始化 Miniconda。
一般而言,选择 "yes" 可完成安装与初始化。
- 安装完成后,可以通过 conda 命令来管理和维护 Python 环境与包。
- 若链接无法访问或解析失败,可能是由于网络问题或链接本身的问题。
请检查网络连接,并确保链接是最新的有效链接。
如问题依然存在,请访问 Anaconda 的官方网站获取最新的下载链接。
四、从 GitHub 仓库克隆项目五、创建虚拟环境六、安装模型依赖库- 切换至项目目录,激活 trellis 虚拟环境,并根据 requirements.txt 文件安装相关依赖。
七、下载预训练模型八、运行 gradio_demo.py 文件九、网页展示当出现以下 Gradio 页面时,表明模型已经成功搭建完毕。