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

郑州网站制作-中国互联怎么创建网站的快捷方式

郑州网站制作-中国互联,怎么创建网站的快捷方式,微网站的建设模板有哪些,怎样做限制只访问一个网站快速排序介绍 快速排序(QuickSort)是一种 分治法 排序算法,基本思想是通过一个 基准元素 将待排序的数组分成两部分,使得一部分元素小于基准元素,另一部分元素大于基准元素,然后递归地对这两部分进行排序。…

快速排序介绍

快速排序(QuickSort)是一种 分治法 排序算法,基本思想是通过一个 基准元素 将待排序的数组分成两部分,使得一部分元素小于基准元素,另一部分元素大于基准元素,然后递归地对这两部分进行排序。

快速排序的步骤:

  1. 选择基准:选择一个基准元素,通常是数组的第一个元素、最后一个元素或者中间的元素。

  2. 划分数组:根据基准元素,将数组分成两部分:

    • 左边部分:所有小于基准元素的元素。
    • 右边部分:所有大于基准元素的元素。
  3. 递归排序:分别对左边和右边的子数组递归进行快速排序。

代码解析:

public static void quickSort(int[] arr, int l, int r) {if (l >= r) return;  // 递归终止条件:当左右指针交叉时,停止递归int x = arr[(r - l >> 1) + l], i = l - 1, j = r + 1;  // 选择基准元素(数组中间的元素)while (i < j) {// 从左边开始,找到第一个大于等于基准元素的数while (arr[++i] < x);// 从右边开始,找到第一个小于等于基准元素的数while (arr[--j] > x);// 如果左指针小于右指针,则交换元素if (i < j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}}// 递归排序左半部分quickSort(arr, l, j);// 递归排序右半部分quickSort(arr, j + 1, r);
}

代码详解:

  1. 终止条件if (l >= r) return;
    当左指针大于或等于右指针时,说明数组已经是一个元素或者没有元素需要排序,所以递归终止。

  2. 选择基准元素int x = arr[(r - l >> 1) + l];
    这行代码选择了数组的中间元素作为基准。具体的实现方法是 (r - l >> 1) + l,这相当于 (l + r) / 2,即取数组的中间元素。

  3. 初始化指针int i = l - 1, j = r + 1;

    • i 初始化为 l - 1,指向数组的左侧。
    • j 初始化为 r + 1,指向数组的右侧。
  4. 划分过程

    • while (i < j):只要 i 小于 j,就继续交换。
    • while (arr[++i] < x);:从左到右遍历,找到第一个大于或等于基准元素的数。
    • while (arr[--j] > x);:从右到左遍历,找到第一个小于或等于基准元素的数。
    • 如果 i < j,说明需要交换这两个元素的位置,确保左边的数小于基准元素,右边的数大于基准元素。
  5. 递归排序

    • quickSort(arr, l, j);:递归对左边子数组进行排序。
    • quickSort(arr, j + 1, r);:递归对右边子数组进行排序。

示例:

假设你有一个数组 arr = {3, 2, 1, 5, 4},你想对其进行排序。

初始时,l = 0r = 4,即整个数组范围。选择基准元素为 arr[2] = 1

  1. 第一次划分

    • 选择 x = 1i = -1j = 5
    • 左指针从 0 开始,找到第一个大于等于 1 的元素 arr[0] = 3
    • 右指针从 4 开始,找到第一个小于等于 1 的元素 arr[4] = 4
    • 交换 arr[0]arr[4],得到 {4, 2, 1, 5, 3}
    • 继续调整,直到所有元素都正确划分。
  2. 递归排序

    • 递归地对左右子数组分别进行排序,直到每个子数组只有一个元素或为空,最终得到排序好的数组。

快速排序的优缺点:

  • 优点

    • 平均时间复杂度为 O(n log n),在实际应用中表现优秀。
    • 不需要额外的空间,空间复杂度为 O(log n)
  • 缺点

    • 最坏情况下时间复杂度为 O(n^2),当数组已经是有序的或者选择的基准不合适时,性能会退化。
    • 不稳定排序:相等的元素排序后可能会交换顺序。

总结:

快速排序是一个非常高效的排序算法,尤其在大多数情况下,它的表现远远优于其他简单排序算法。通过合理选择基准元素,并且利用分治法的递归思想,快速排序能在平均情况下提供 O(n log n) 的性能。

http://www.dtcms.com/wzjs/120467.html

相关文章:

  • 做伊瑞尔竞技场的网站2022最近热点事件及评述
  • app设计模板网站免费的网络推广平台
  • 做泵阀生意到哪个网站惠州seo全网营销
  • 个人网站用什么域名好营销平台有哪些
  • 非凡网站建设 新三板网址外链平台
  • 电脑QQ浮动窗口怎做电脑网站seo自学网站
  • 做海报网站推广普通话手抄报简单又好看内容
  • 自己有网站怎么推广西安seo网站建设
  • 长沙精品网站制作百度地址
  • 直播网站开发多少钱银川seo优化
  • 网站文件大小怎样建立自己网站
  • 天津做网站美工最新清远发布
  • wordpress栏目布局seo教程网站
  • 黄岩网站建设兼职百度软件下载中心官方网站
  • 遨游建站市场营销策划书
  • 郑州建站怎么操作南平网站seo
  • 网站被挂马怎么处理自己搭建网站
  • wordpress 文章 插入视频广州seo优化费用
  • 网站建设选方舟网络太原seo培训
  • 郑州的网站建设公司有哪些朋友圈营销
  • 深圳大型网站设计网络营销运营方案
  • 网站建设招标提问seo网站管理
  • 购物网站建设图标大全百度开放平台
  • 静态网站建设开发百度经验实用生活指南
  • 做企业网站需要哪些材料市场营销策略包括哪些策略
  • 怎么从零开始做网站百度页面推广
  • 公司核准名称网站seo关键词排名优化案例
  • 学做吃的网站有哪些企业网站的功能
  • 手机网站制作方法学生个人网页设计作品
  • 电商网站开发参考文献游戏行业seo整站优化