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

html购物网站模板东莞市建设网站首页

html购物网站模板,东莞市建设网站首页,虚拟机下载手机版,怎样做公司网站推广大家好#xff0c;今天我们来聊聊快速排序#xff08;QuickSort#xff09;算法#xff0c;这个经典的排序算法被广泛应用于各种需要高效排序的场景。作为一种分治法#xff08;Divide and Conquer#xff09;算法#xff0c;快速排序的效率在平均情况下非常高#xff…大家好今天我们来聊聊快速排序QuickSort算法这个经典的排序算法被广泛应用于各种需要高效排序的场景。作为一种分治法Divide and Conquer算法快速排序的效率在平均情况下非常高是大多数排序算法中的“黄金选手”。那么让我们一起来了解如何在 Java 中实现快速排序吧 一、什么是快速排序 快速排序是一种基于分治法的排序算法它的基本思想是通过选择一个“基准”元素将待排序的数组分成两个子数组使得一个子数组的所有元素都小于基准元素另一个子数组的所有元素都大于基准元素。然后对这两个子数组递归执行快速排序最终完成排序。 快速排序的步骤 从数组中选择一个元素作为“基准”pivot。将数组中所有比基准小的元素移到基准的左边比基准大的元素移到基准的右边。递归地对基准左边和右边的子数组进行排序。当子数组的大小为 1 或者 0 时停止递归因为它们已经是有序的。 二、快速排序的时间复杂度 快速排序的时间复杂度是O(n log n)但在最坏情况下比如每次选取的基准元素都是最小或最大的元素它的时间复杂度会退化到O(n²)。然而在平均情况下快速排序的表现非常优秀因此它通常被认为是高效的排序算法之一。 最好和平均时间复杂度O(n log n)最坏时间复杂度O(n²)空间复杂度O(log n) 三、Java 快速排序的实现 在 Java 中实现快速排序我们需要编写一个递归函数来进行分割和排序。具体步骤如下 选择基准元素常见的选择方式是选取数组的第一个元素、最后一个元素、或随机选择一个元素作为基准。划分数组通过一个指针将数组分成两个部分一部分小于基准另一部分大于基准。递归排序子数组对左边和右边的子数组分别递归执行快速排序。 下面是 Java 实现快速排序的代码 public class QuickSort {public static void sort(int[] arr, int left, int right) {//递归跳出条件每个左右子数组的长度为1大于和等于都要有if (left right) {return;}//基准数int base arr[left];int i left;int j right;while (i j) {//注意先从右向左找注意没有等号while (arr[j] base j i) {j--;}//再从左往右找注意要有等号while (arr[i] base i j) {i;}//如果因为i j跳出循环那么没必要进行交换if (i j) {//交换两元素位置int temp arr[i];arr[i] arr[j];arr[j] temp;}}//交换基准与ij的位置arr[left] arr[i];arr[i] base;//左右子数组递归排序sort(arr,left, i - 1);sort(arr, i 1, right);}public static void main(String[] args) {int[] arr {10, 7, 8, 9, 1, 5};System.out.println(原始数组);printArray(arr);// 调用快速排序quickSort(arr, 0, arr.length - 1);System.out.println(排序后的数组);printArray(arr);} }四、代码解析 quickSort 方法这是快速排序的递归入口函数。它接收一个数组和数组的下标 low 和 high表示待排序数组的范围。如果 low 小于 high就调用 partition 方法来划分数组并递归排序。 partition 方法该方法用于选择基准元素并将数组划分为两部分 所有小于基准的元素排在基准的左边。所有大于基准的元素排在基准的右边。 最后基准元素会被放到它的正确位置并返回该位置的索引。 swap 方法用于交换数组中两个元素的位置。 printArray 方法用于打印数组便于观察排序结果。 五、输出结果 假设我们使用的数组是 {10, 7, 8, 9, 1, 5}那么运行上述代码后的输出将会是 原始数组 10 7 8 9 1 5 排序后的数组 1 5 7 8 9 10 可以看到数组成功地按照从小到大的顺序进行了排序。 六、优化与扩展 选择基准优化 在选择基准时避免总是选取第一个或最后一个元素可以通过三数取中法来选择基准元素从而避免在已经部分有序的数组中出现最坏情况O(n²)。 示例 int mid low (high - low) / 2; int pivot medianOfThree(arr[low], arr[mid], arr[high]);尾递归优化 快速排序是递归的递归深度可能较深。通过尾递归优化可以将较小的子数组放在栈中而将较大的子数组先处理减少栈的深度。 非递归实现 快速排序也可以通过栈实现非递归版本避免递归过深导致栈溢出。 七、小结 快速排序是一个高效的排序算法通过分治法将问题逐步简化。尽管它在最坏情况下的时间复杂度是 O(n²)但在平均情况下其表现非常优异尤其是在处理大量数据时。如果能优化基准选择快速排序的效率会进一步提升。希望通过本文的介绍你对快速排序有了更深入的了解并且能够在 Java 中轻松实现这一经典算法
http://www.hkea.cn/news/14290573/

相关文章:

  • 开发网站现实网络传输失败网站建设需要建站公司沟通哪些
  • 美团网站建设规划书重庆网站建设近重庆零臻科技
  • 做采购 通常在什么网站看广州有什么好玩的室内
  • 京山网站制作网址导航推荐
  • 用狐狸做logo的网站网站建设数据处理
  • 安徽省建设监理有限公司网站做网站被网警找
  • 企业网站推广方法实验报告常德建设网站公司
  • 门户网站做有效的网站优化
  • 国家城乡建设规划部网站程序小程序开发
  • dede 网站名称不显示网页视频下载网址
  • 山西省建设银行网站淘宝运营培训多少钱
  • 关于网站建设的简历模板嘉兴seo网站优化
  • 手机网站设计作品欣赏镇江教育云平台网站建设
  • 贵州住房建设厅网站学编程多久可以写游戏辅助
  • 网站制作公司昆明企业培训课程设置
  • 做什麽网站有前景10个神奇的.htaccess技巧(for wordpress)
  • 网站的空间是服务器吗python编程入门
  • 企业网站建设公司 末路号卡分销系统搭建
  • 网站建设招标书品牌推广策略包括哪些内容
  • 免费网站安全软件大全游戏旅游官网
  • 即墨有做网站的吗中国新闻社招聘2023年
  • 网站企业建站如何推广微信公众号
  • 做电影网站用什么服务器比较好攻击网站方法
  • 如何做购物网站推广电子商务营销优势
  • 网站开通宣传怎么写vue 做的网站
  • 网站建设难吗济南seo排名搜索
  • 搭建个人网站做电影网站哪个服务器好
  • python做网站模板新网站如何做seo推广
  • 机械做网站好处湖北中牛建设有限公司网站
  • 佛山市外贸企业高端网站设计品牌广告设计制作公司网站源码