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

永嘉做网站常州市经开区建设局网站

永嘉做网站,常州市经开区建设局网站,仓库系统erp好学吗,吉林省级建设行政主管部门政务网站快速排序#xff08;Quick Sort#xff09;是一种高效的排序算法#xff0c;采用分治法#xff08;Divide and Conquer#xff09;的策略来对一个数组进行排序。快速排序的平均时间复杂度为 O(n log n)#xff0c;在最坏的情况下为 O(n^2)#xff0c;但这种情况很少发生…快速排序Quick Sort是一种高效的排序算法采用分治法Divide and Conquer的策略来对一个数组进行排序。快速排序的平均时间复杂度为 O(n log n)在最坏的情况下为 O(n^2)但这种情况很少发生。快速排序因其高效性而在实际应用中非常受欢迎。 快速排序的工作原理 选择基准值从数组中选择一个元素作为基准值pivot选择方法有多种如第一个元素、最后一个元素、中间元素或随机元素。分区操作重新排列数组所有比基准值小的元素摆放在基准值的前面所有比基准值大的元素摆放在基准值的后面相等的可以到任一边。在这个分区退出之后基准值所在的位置就是其最终位置。递归排序递归地对基准值左侧和右侧的子数组进行快速排序。 快速排序的优缺点 优点 在平均情况下快速排序具有很好的性能时间复杂度为 O(n log n)。快速排序是原地排序不需要额外的存储空间。 缺点 最坏情况下的时间复杂度为 O(n^2)但可以通过随机化来避免。快速排序是不稳定的排序方法相等的元素可能会在排序后相对位置发生变化。 快速排序的Java实现 public class QuickSort {public void quickSort(int[] arr, int low, int high) {if (low high) {int pivotIndex partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex 1, high);}}private int partition(int[] arr, int low, int high) {int pivot arr[high];int i low - 1;for (int j low; j high; j) {if (arr[j] pivot) {i;swap(arr, i, j);}}swap(arr, i 1, high);return i 1;}private void swap(int[] arr, int i, int j) {int temp arr[i];arr[i] arr[j];arr[j] temp;}public static void main(String[] args) {QuickSort solution new QuickSort();int[] arr {10, 7, 8, 9, 1, 5};solution.quickSort(arr, 0, arr.length - 1);System.out.println(Sorted array: Arrays.toString(arr));} }在面试中快速排序是一个重要的知识点它考察应聘者对分治法策略和递归思想的理解。通过实现快速排序可以展示你对基本算法和数据结构的掌握程度。希望这些知识点和示例代码能够帮助你更好地准备面试快速排序是一种流行且高效的排序算法经常被用于面试中考察应聘者的算法实现能力。以下是三道可能出现在大厂面试中的与快速排序相关的编程题目以及相应的Java源码实现。 题目 1快速排序实现 描述 实现快速排序算法对给定数组进行排序。 示例 输入: [3, 6, 8, 10, 1, 2, 1] 输出: 经过排序后的数组Java 源码 import java.util.Arrays;public class QuickSortImplementation {public void quickSort(int[] arr, int low, int high) {if (low high) {int pivotIndex partition(arr, low, high);quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex 1, high);}}private int partition(int[] arr, int low, int high) {int pivot arr[high];int i low - 1;for (int j low; j high; j) {if (arr[j] pivot) {i;swap(arr, i, j);}}swap(arr, i 1, high);return i 1;}private void swap(int[] arr, int i, int j) {int temp arr[i];arr[i] arr[j];arr[j] temp;}public static void main(String[] args) {QuickSortImplementation solution new QuickSortImplementation();int[] arr {3, 6, 8, 10, 1, 2, 1};solution.quickSort(arr, 0, arr.length - 1);System.out.println(Sorted array: Arrays.toString(arr));} }题目 2快速排序的变种 - 三数取中法的基准选择 描述 在快速排序中基准值的选择对性能有很大影响。使用三数取中法选择基准值即在数组中随机选择三个元素然后取它们的中值作为基准值。 示例 输入: [3, 6, 8, 10, 1, 2, 1] 输出: 经过排序后的数组Java 源码 import java.util.Random;public class QuickSortMedianOfThree {// 其他方法与上题相同仅 partition 方法改变private int partition(int[] arr, int low, int high) {Random random new Random();int pivotIndex medianOfThree(arr, low, high);swap(arr, pivotIndex, high);int pivot arr[high];int i low - 1;for (int j low; j high; j) {if (arr[j] pivot) {i;swap(arr, i, j);}}swap(arr, i 1, high);return i 1;}private int medianOfThree(int[] arr, int low, int high) {int mid low (high - low) / 2;if (arr[low] arr[mid]) swap(arr, low, mid);if (arr[low] arr[high]) swap(arr, low, high);if (arr[mid] arr[high]) swap(arr, mid, high);swap(arr, mid, high);return high;}// swap 方法与上题相同// main 方法与上题相同 }题目 3快速排序优化 - 尾递归优化 描述 在快速排序中对较小的子数组使用尾递归优化以减少递归深度。 示例 输入: [3, 6, 8, 10, 1, 2, 1] 输出: 经过排序后的数组Java 源码 public class QuickSortTailRecursion {// quickSort 方法与上题相同private int partition(int[] arr, int low, int high) {// ... 与上题相同}private void swap(int[] arr, int i, int j) {// ... 与上题相同}public static void main(String[] args) {QuickSortTailRecursion solution new QuickSortTailRecursion();int[] arr {3, 6, 8, 10, 1, 2, 1};solution.quickSort(arr, 0, arr.length - 1);System.out.println(Sorted array: Arrays.toString(arr));}// 添加 tailRecursiveQuickSort 方法进行尾递归优化public void tailRecursiveQuickSort(int[] arr, int low, int high) {while (low high) {int pivotIndex partition(arr, low, high);if (pivotIndex - low high - pivotIndex) {tailRecursiveQuickSort(arr, low, pivotIndex - 1);low pivotIndex 1;} else {tailRecursiveQuickSort(arr, pivotIndex 1, high);high pivotIndex - 1;}}} }这些题目和源码展示了快速排序的不同应用和优化技巧。在面试中能够根据问题的特点选择合适的算法并实现其解决方案是非常重要的。希望这些示例能够帮助你更好地准备面试
http://www.w-s-a.com/news/675490/

相关文章:

  • 如何用微信做网站免费设计logo网站有哪些
  • 服务平台型网站余姚网站定制
  • 网站搭建联系方式太平阳电脑网网站模板
  • 请简述网站制作流程html5网络公司网站模板
  • 海尔集团企业网站建设分析重庆市建设银行网站
  • 介绍公司的网站有哪些广西壮族自治区
  • 网站做rss wordpress9 1短视频安装软件
  • 网站建设价格西安室内设计网站排行榜前十名知乎
  • 用nas建设服务器网站用vs做音乐网站
  • 天津市武清区住房建设网站网站自适应框架
  • 制作移动网站公司网站开发职业规划
  • 网站头部怎样做有气势wordpress 页面 锚
  • 秦皇岛网站建设系统推荐个人网站免费制作
  • 我做夫人那些年网站登录wordpress 扫码付费
  • 网站关键词代码怎么做公司 网站建设
  • 哈尔滨多语言网站建设wordpress分类链接
  • 购物网站项目介绍软件开发流程的五大步骤
  • 做的网站怎么放在网上2008 iis搭建网站
  • 网站维护服务公司上海兼职网站制作
  • 企业做网站需要多少钱湘潭九华网站
  • 嘉兴建站服务微营销官网
  • 比较好的网页模板网站浦项建设(中国)有限公司网站
  • 有趣的个人网站网页设计与制作的岗位职责
  • 有建设网站的软件吗长沙做网站的公司对比
  • 网站的外链接数中铝长城建设有限公司网站
  • 北京建设网站公司网站建设费用 无形资产
  • 适合seo的建站系统如何建立网页
  • 我想自己建立一个网站给大家分享个永久免费的云服务器
  • 怎样做网站和网站的友情链接官网优化 报价
  • 购买网站空间大小聊城网站空间公司