当前位置: 首页 > news >正文

关于外贸公司的网站光电信息科学与工程

关于外贸公司的网站,光电信息科学与工程,修改WordPress登陆,好网站建设公司有多少一、快速排序的基本原理 快速排序是一种基于分治策略的高效排序算法。它的基本思想是#xff1a; 选择一个基准元素#xff08;pivot#xff09;#xff0c;通过一趟排序将待排序序列分割成两部分#xff0c;其中一部分的所有元素都比基准元素小#xff0c;另一部分的所有… 一、快速排序的基本原理 快速排序是一种基于分治策略的高效排序算法。它的基本思想是 选择一个基准元素pivot通过一趟排序将待排序序列分割成两部分其中一部分的所有元素都比基准元素小另一部分的所有元素都比基准元素大。然后分别对这两部分继续进行快速排序直到整个序列都有序。 二、快速排序的具体实现步骤 1. 选择基准元素 通常可以选择待排序序列中的第一个元素、最后一个元素或者中间元素等作为基准元素。在示例代码中我们常选取待排序数组的最后一个元素作为基准元素例如 隐藏过程 c 复制 int pivot arr[high];2. 划分操作Partition 这是快速排序的关键步骤目的是通过比较和交换元素将数组划分为两部分使得左边部分的元素都小于等于基准元素右边部分的元素都大于等于基准元素。 具体实现过程如下 设置两个指针一个指针 i 初始指向待排序序列的第一个元素的前一个位置即 low - 1另一个指针 j 从待排序序列的第一个元素即 low开始。 展开过程 遍历数组比较每个元素与基准元素的大小关系。当 j 指向的元素小于基准元素时将 i 指针先向前移动一位因为 i 初始位置在第一个元素之前然后交换 i 和 j 所指向的元素。 展开过程 遍历完整个数组除了基准元素本身因为基准元素在最后一个位置前面的循环到 high - 1 就结束了后将基准元素与 i 1 位置的元素进行交换。这样就完成了一次划分操作使得基准元素处于正确的位置左边的元素都小于它右边的元素都大于它。 展开过程 3. 递归排序 完成一次划分操作后得到了基准元素的正确位置假设为 pi此时数组被分成了两部分arr[low] 到 arr[pi - 1] 和 arr[pi 1] 到 arr[high]。然后分别对这两部分递归地调用快速排序函数直到整个数组都有序。 隐藏过程 c 复制 if (low high) {int pi partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi 1, high); }三、快速排序的代码示例 以下是完整的快速排序 C 语言代码示例包含了交换函数 swap、划分函数 partition 和快速排序主函数 quickSort 隐藏过程 c 复制 #include stdio.h// 交换两个整数的函数 void swap(int *a, int *b) {int t *a;*a *b;*b t; }// 划分函数将数组划分为两部分 int partition(int arr[], int low, int high) {int pivot arr[high];int i (low - 1);for (int j low; j high - 1; j) {if (arr[j] pivot) {i;swap(arr[i], arr[j]);}}swap(arr[i 1], arr[high]);return (i 1); }// 快速排序主函数 void quickSort(int arr[], int low, int high) {if (low high) {int pi partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, high, pi 1);} }int main() {int arr[] {5, 4, 3, 2, 1};int n sizeof(arr) / sizeof(arr[0]);quickSort(arr, 0, n - 1);printf(排序后的数组: );for (int i 0; i n; i) {printf(%d , arr[i]);}return 0; }四、快速排序的时间复杂度和空间复杂度 1. 时间复杂度 平均情况快速排序在平均情况下的时间复杂度为 。这是因为每次划分操作大致能将数组分成两部分需要递归地对两部分进行排序而递归的深度大约为 以 2 为底每次划分操作需要遍历数组中的大约  个元素所以总的时间复杂度为 。最坏情况当选择的基准元素总是数组中的最大或最小元素时每次划分操作只能将数组分成一个元素和其余元素两部分这样就需要进行  次划分操作每次划分操作需要遍历数组中的  个元素此时时间复杂度为 。不过通过合理选择基准元素如随机选择基准元素等方法可以尽量避免这种最坏情况的发生。 2. 空间复杂度 快速排序的空间复杂度取决于递归调用的深度。在平均情况下递归调用的深度为 所以空间复杂度为 。在最坏情况下递归调用的深度为 此时空间复杂度为 。 五、快速排序的特点和应用场景 1. 特点 快速排序是一种原地排序算法它不需要额外的存储空间来存储中间结果除了递归调用栈所占用的空间。它的平均性能非常好通常比冒泡排序、插入排序等简单排序算法快得多。 2. 应用场景 快速排序适用于对大规模数据进行排序的场景尤其是当数据分布比较随机时能够充分发挥其高效的排序性能。在很多编程语言的标准库中快速排序常常被用作默认的排序算法或者是排序算法的重要组成部分。 快速排序通过巧妙的划分操作和递归调用实现了高效的排序功能但在实际应用中也需要注意避免最坏情况的发生以确保其高效性。
http://www.hkea.cn/news/14316577/

相关文章:

  • 百度官网认证网站wordpress 商城 插件
  • 哪个网站上做ppt比较好看的南昌住房和城乡建设部网站电话
  • 济南定制网站建设棠下手机网站建设
  • 创意合肥网站建设怎么提升网站加载速度
  • 有没有做衣服的网站吗网站建设公司简介范文
  • 上海知名网站开发公司网站模板好
  • 帝国网站后台管理系统怎样建立一个自己的网站
  • 青岛网站建设莫道网络php网站后台密码忘记
  • 煤炭建设协会官方网站国内做外贸网站的有哪些
  • 做任务 网站孝感网站建设软件
  • 做网站怎么电话约客户代码编程教学入门
  • 青海省建设厅网站备案资料如何将网站和域名绑定域名
  • 怎样在微信上开发小程序临沂网站关键字优化
  • 专做宝宝的用品网站如皋网页设计
  • 简单的旅游网站代码国外网站免费dns
  • 内网是怎么做网站的百度网址大全首页设为首页
  • 郑州专业做淘宝网站推广越秀区做网站
  • 天宫院网站建设网站建设推广刺盾云
  • 互动网站开设网站步骤
  • 房产网站开发公司领动营销网站建设
  • 展示类网站模板js深圳网站设计兴田德润简介
  • 能做外链的产品网站做网站电商云数据库有用吗
  • 服装网站建设的规模和类别seo黑帽多久入门
  • 建网站有什么用wordpress好不好用
  • 织梦网站模板源码php回龙观手机网站开发服务
  • 网站设计建设,网络营销推广普通高等学校健康驿站建设指引
  • 做网站推广的工作好吗哈尔滨搜索引擎排名
  • ps做网站大小尺寸网站的备案号在哪
  • 建设银行网站登录不进去品牌网站的建设
  • 天津网站制作软件在线教学的网站开发方案