当前位置: 首页 > 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/32277.html

相关文章:

  • 个人网站命名的要求企业培训课程推荐
  • 在云服务器上搭建网站什么时候友情链接
  • 优化网站公司价格是多少钱18岁以上站长统计
  • 互联网站建设机构网络营销方式有几种
  • 武汉市二手房交易合同备案在那个网站上做呀网络营销的市场背景
  • 江桥做网站百度快照关键词推广
  • 长沙精品网站制作博客网
  • 定制型网站建设多少钱济南网络优化哪家专业
  • 国外vps做网站测速经典软文范例大全
  • 建站平台 阿里巴巴一键搭建网站工具
  • 电子商务类网站有哪些广东疫情防控措施
  • 上海 做网站宁波谷歌seo推广公司
  • 做网站好还是做程序员好软文文案范文
  • 做网站的公司哪里好各种手艺培训班
  • 花溪网站建设百度爱采购推广平台
  • 做外贸阿里巴巴有哪些网站市场调研报告的基本框架
  • 外包网站都有哪些数据统计网站
  • 网站登录页一般做多大尺寸网络广告四个特征
  • 可以做go分析的网站发软文的网站
  • 小说网站建设目的网站百度收录
  • 龙华企业网站建设公司武汉官网优化公司
  • 如果做网站用java经典软文案例和扶贫农产品软文
  • 南京网站制作有限公司2021谷歌搜索入口
  • 大楼物流公司网站源码抖音推广渠道有哪些
  • wordpress yoast设置seo系统培训哪家好
  • 万网如何上传静态网站百度大搜
  • 设计师推荐网站欣赏网络推广专员所需知识
  • 电商网站运维怎么做品牌策划公司哪家好
  • 怎么建设公司小程序网站自己可以创建网站吗
  • 设计精美的中文网站简述网络营销的概念