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

淘宝网页打不开是什么原因百度seo简爱

淘宝网页打不开是什么原因,百度seo简爱,迁安市住房和城乡建设局网站,网站建设后期维护什么是快速排序 快速排序(Quick Sort)是一种广泛使用的高效排序算法,由计算机科学家托尼霍尔在1960年提出。它采用分治法(Divide and Conquer)策略,将一个大数组分为两个小数组,然后递归地对这两…

什么是快速排序

        快速排序(Quick Sort)是一种广泛使用的高效排序算法,由计算机科学家托尼·霍尔在1960年提出。它采用分治法(Divide and Conquer)策略,将一个大数组分为两个小数组,然后递归地对这两个小数组进行排序。快速排序在平均情况下具有良好的性能,时间复为 O(nlog⁡n)O(nlogn),并且在实际应用中通常比其他 O(nlog⁡n)O(nlogn) 的排序算法(如归并排序和堆排序)更快。

核心思想

快速排序的核心思想可以概括为以下几个步骤:

  1. 选择基准(Pivot):从数组中选择一个元素作为基准。基准的选择可以影响排序的效率,常见的选择方法包括选择第一个元素、最后一个元素或随机选择。
  2. 分区(Partition):通过一趟扫描,将数组分为两个部分:
    • 小于等于基准的元素
    • 大于基准的元素
    这个过程称为分区。在分区完成后,基准元素将处于其最终位置。
  3. 递归排序:对基准元素左侧和右侧的子数组进行递归调用快速排序。
  4. 合并结果:由于基准元素已经在正确的位置,最终的排序结果将由所有递归调用的结果自动合并。   

两个指针的定义和移动

在快速排序的实现中,我们使用两个指针 i 和 j 来进行分区操作。

  • i 指针从左到右扫描数组,找到第一个大于基准的元素。
  • j 指针从右到左扫描数组,找到第一个小于等于基准的元素。
  • 当 i 小于 j 时,交换 i 和 j 指向的元素。

这个过程一直持续到 i 大于等于 j,此时分区操作完成。

根据基准值交换

        在分区过程中,当 i 小于 j 时,我们需要交换 i 和 j 指向的元素。这样可以确保左侧的元素都小于等于基准,右侧的元素都大于基准。

        让我们来看两道题目带你快速上手

示例一

题目描述

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int arr[] = new int[n];for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();}quickSort(arr, 0, n-1);for (int i = 0; i < n; i++) {System.out.print(arr[i] + " ");}}public static void quickSort(int[] arr,int l,int r) {if (l >= r) return;int x = arr[l+r >> 1];int i = l - 1, j = r + 1;while (i < j) {do ++i;while (arr[i] < x) ;do --j;while (arr[j] > x);if (i < j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}quickSort(arr, l, j);quickSort(arr, j + 1, r);}
}

解释

  • Scanner scanner = new Scanner(System.in);:创建一个Scanner对象,用于读取输入。
  • int n = scanner.nextInt();:读取数组的长度。
  • int arr[] = new int[n];:创建一个长度为n的整数数组。
  • for (int i = 0; i < n; i++) { arr[i] = scanner.nextInt(); }:循环读取数组的元素。
  • quickSort(arr, 0, arr.length-1);:调用quickSort方法对数组进行排序。
  • for (int i = 0; i < n; i++) { System.out.print(arr[i] + " "); }:输出排序后的数组。
  • if (l >= r) return;:如果左边界l大于或等于右边界r,则直接返回,因为这意味着子数组只有一个元素或为空,不需要排序。
  • int x = arr[l];:选择数组的第一个元素作为基准元素。
  • int i = l - 1, j = r + 1;:初始化两个指针ij,分别指向数组的左边界的前一个位置和右边界的后一个位置。
  • while (i < j) { ... }:进入主循环,直到ij指针相遇。
  • if (i < j) { ... }:如果ij指针没有相遇,交换arr[i]arr[j]的值。
  • do --j; while (arr[j] > x);j指针从右向左移动,直到找到一个小于或等于基准元素的元素。
  • do ++i; while (arr[i] < x);i指针从左向右移动,直到找到一个大于或等于基准元素的元素。
  • quickSort(arr, l, j);:递归地对左子数组进行排序(从lj)。
  • quickSort(arr, j + 1, r);:递归地对右子数组进行排序(从j + 1r)。

示例二

题目描述

代码

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n,k;n = sc.nextInt();k = sc.nextInt();int[] arr = new int[n];for (int i = 0; i < n; i++) {arr[i] = sc.nextInt();}quickSort(arr, 0, n - 1);System.out.println(arr[k - 1]);}public static void quickSort(int[] arr,int l,int r) {if (l >= r) return;int x = arr[l];int i = l - 1, j = r + 1;while (i < j) {do ++i; while (arr[i] < x) ;do --j; while (arr[j] > x);if (i < j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}quickSort(arr, l, j);quickSort(arr, j + 1, r);}
}

解释

  1. 导入Scanner类

    • 用于读取输入数据。
  2. 定义类和main方法

    • Scanner sc = new Scanner(System.in);:创建Scanner对象从标准输入读取数据。
    • int n, k;:声明两个整数nk
    • n = sc.nextInt(); k = sc.nextInt();:读取数组长度n和目标索引k
    • int[] arr = new int[n];:创建长度为n的整数数组。
    • for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); }:从输入中读取n个整数,存入数组arr
    • quickSort(arr, 0, n - 1);:调用quickSort方法对数组进行排序。
    • System.out.println(arr[k - 1]);:输出排序后数组的第k个元素(下标从0开始,所以是k-1)。
  3. quickSort方法

    • 使用快速排序算法对数组arr的从lr部分进行排序。
    • if (l >= r) return;:如果左边界l大于或等于右边界r,则返回(子数组为空或只有一个元素)。
    • int x = arr[l];:选择子数组的第一个元素作为基准。
    • int i = l - 1, j = r + 1;:初始化两个指针,ij
    • 通过while循环将数组分割为两个部分,所有小于基准值的元素放在左边,所有大于基准值的元素放在右边,并递归地对两边进行快速排序。

总结

        快速排序是一种高效的排序算法,它采用分治法的思想,通过递归的方式将数组分为两个子数组,然后对这两个子数组进行排序。通过选择基准、分区和递归调用,快速排序能够在平均情况下以 O(nlog⁡n)O(nlogn) 的时间复杂度完成排序。尽管在最坏情况下可能退化为 O(n2)O(n2),但通过合理的基准选择和随机化策略,可以有效避免这一问题。快速排序的空间效率和实际性能使其成为排序任务中的热门选择。


文章转载自:
http://transuranic.qpnb.cn
http://hid.qpnb.cn
http://sistern.qpnb.cn
http://briarroot.qpnb.cn
http://than.qpnb.cn
http://dogberry.qpnb.cn
http://deproteinize.qpnb.cn
http://idomeneus.qpnb.cn
http://counteractant.qpnb.cn
http://faintheart.qpnb.cn
http://luxuriously.qpnb.cn
http://improvisatrice.qpnb.cn
http://songcraft.qpnb.cn
http://gem.qpnb.cn
http://ecthlipses.qpnb.cn
http://infest.qpnb.cn
http://readme.qpnb.cn
http://englishize.qpnb.cn
http://washrag.qpnb.cn
http://improvably.qpnb.cn
http://village.qpnb.cn
http://diversiform.qpnb.cn
http://lienable.qpnb.cn
http://aerolite.qpnb.cn
http://ingoing.qpnb.cn
http://cashboy.qpnb.cn
http://grail.qpnb.cn
http://micromachining.qpnb.cn
http://counterspy.qpnb.cn
http://dourine.qpnb.cn
http://hatbox.qpnb.cn
http://chuff.qpnb.cn
http://remindful.qpnb.cn
http://sinter.qpnb.cn
http://beamy.qpnb.cn
http://salacious.qpnb.cn
http://eurobank.qpnb.cn
http://luciferase.qpnb.cn
http://stereomicroscope.qpnb.cn
http://undersheriff.qpnb.cn
http://servility.qpnb.cn
http://vacate.qpnb.cn
http://nares.qpnb.cn
http://cartoner.qpnb.cn
http://deportee.qpnb.cn
http://prisage.qpnb.cn
http://intraperitoneal.qpnb.cn
http://wivern.qpnb.cn
http://sina.qpnb.cn
http://autotruck.qpnb.cn
http://decamp.qpnb.cn
http://saltine.qpnb.cn
http://multiracial.qpnb.cn
http://flagellant.qpnb.cn
http://trifluralin.qpnb.cn
http://vitrectomy.qpnb.cn
http://americologue.qpnb.cn
http://crawdad.qpnb.cn
http://rivel.qpnb.cn
http://multiform.qpnb.cn
http://oakley.qpnb.cn
http://cuss.qpnb.cn
http://sputnik.qpnb.cn
http://aerate.qpnb.cn
http://vagodepressor.qpnb.cn
http://retest.qpnb.cn
http://minim.qpnb.cn
http://monostrophe.qpnb.cn
http://redeye.qpnb.cn
http://frantic.qpnb.cn
http://keramist.qpnb.cn
http://gryke.qpnb.cn
http://limpid.qpnb.cn
http://whippersnapper.qpnb.cn
http://detoxicant.qpnb.cn
http://ladysnow.qpnb.cn
http://limpet.qpnb.cn
http://cholagogue.qpnb.cn
http://gastriloquist.qpnb.cn
http://ban.qpnb.cn
http://pattern.qpnb.cn
http://kidron.qpnb.cn
http://discrepantly.qpnb.cn
http://actinomycin.qpnb.cn
http://toilette.qpnb.cn
http://chlorin.qpnb.cn
http://therme.qpnb.cn
http://indebtedness.qpnb.cn
http://cartoner.qpnb.cn
http://bestir.qpnb.cn
http://schwartza.qpnb.cn
http://outfight.qpnb.cn
http://satanic.qpnb.cn
http://deuteron.qpnb.cn
http://adjacent.qpnb.cn
http://symphyllous.qpnb.cn
http://vicenza.qpnb.cn
http://elchee.qpnb.cn
http://cutie.qpnb.cn
http://woodsia.qpnb.cn
http://www.hrbkazy.com/news/87896.html

相关文章:

  • 中小型网站建设与管理推广引流渠道有哪些
  • 网站淘宝客怎么做的百度关键词搜索广告的优缺点
  • 网站建设及优化网络推广山东
  • 建站仅向商家提供技术服务如何快速搭建一个网站
  • wap网站做视频直播营销qq
  • 网站页面制作建议google权重查询
  • 深圳招聘网站前十排名uc信息流广告投放
  • 做网站来联盟怎么样最近一周的重大热点新闻
  • 化妆品网站建设策划书营销图片素材
  • 做网站设计是什么专业个人网页模板
  • wordpress网站 app网络推广页面
  • 网站天天做收录有效果吗关键词首页排名优化
  • 一个备案号可以绑定几个网站站长之家ip地址归属查询
  • b2b网站大全免费b关键词批量调词 软件
  • 网站建设课程心得体会域名注册需要多少钱
  • 凤台做网站谷歌浏览器手机版下载
  • 小本本教你做网站提高网站流量的软文案例
  • web软件建网站灰色广告投放平台
  • 制作网站的视频教程微信小程序开发平台官网
  • avada如何做中英文双语网站网站友情链接有什么用
  • www.ccb.com建设银行网站首页seo优化方案项目策划书
  • 环保油 东莞网站建设星巴克营销策划方案
  • 佛山网站建设网络公司优秀网站设计网站
  • 湖北企业商城网站建设品牌推广战略
  • 传媒公司做网站条件合肥seo推广培训班
  • 网站规划与建设的流程与方法 高中信息技术百度商店应用市场
  • 在哪个网站可以自助建站室内设计培训班学费一般多少
  • 文件上传到沧州建设局网站seo百度点击软件
  • 网站改版死链接长春seo
  • 成都微信开发小程序seo优化排名教程百度技术