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

世界杯竞猜网站开发图片外链生成器

世界杯竞猜网站开发,图片外链生成器,seo百度站长工具查询,wordpress分类信息 模板“快速排序就是个二叉树的前序遍历” ——————labuladong 快速排序的逻辑 快速排序是先将一个元素排好序#xff0c;然后再将剩下的元素排好序。 若要对 nums[lo..hi] 进行排序#xff0c;我们先找一个分界点 p#xff0c;通过交换元素使得 nums[lo..p-1] 都小于等于 … “快速排序就是个二叉树的前序遍历”                                                                                         ——————labuladong 快速排序的逻辑 快速排序是先将一个元素排好序然后再将剩下的元素排好序。 若要对 nums[lo..hi] 进行排序我们先找一个分界点 p通过交换元素使得 nums[lo..p-1] 都小于等于 nums[p]且 nums[p1..hi] 都大于 nums[p]然后递归地去 nums[lo..p-1] 和 nums[p1..hi] 中寻找新的分界点最后整个数组就被排序了。 从二叉树的视角我们可以把子数组 nums[lo..hi] 理解成二叉树节点上的值srot 函数理解成二叉树的遍历函数。 partition 函数每次都将数组切分成左小右大两部分最后形成的这棵二叉树是一棵二叉搜索树 但谈到二叉搜索树的构造那就不得不说二叉搜索树不平衡的极端情况极端情况下二叉搜索树会退化成一个链表导致操作效率大幅降低。所以我们要对初始数组进行随机性处理 快速排序的代码框架 void sort(int[] nums, int lo, int hi) {/****** 前序遍历位置 ******/// 通过交换元素构建分界点 pint p partition(nums, lo, hi);/************************/sort(nums, lo, p - 1);sort(nums, p 1, hi); } 我们与二叉树的前序遍历代码框架进行对比 /* 二叉树遍历框架 */ void traverse(TreeNode root) {if (root null) {return;}/****** 前序位置 ******/print(root.val);/*********************/traverse(root.left);traverse(root.right); } 快速排序的代码实现 class Quick {public static void sort(int[] nums) {// 为了避免出现耗时的极端情况先随机打乱数组元素顺序shuffle(nums);// 排序整个数组原地修改sort(nums, 0, nums.length - 1);}// 私有的递归排序函数使用快速排序算法对数组进行排序 private static void sort(int[] nums, int lo, int hi) {if (lo hi) {return; // 递归结束条件当 lo 大于等于 hi 时子数组已经有序}// 对 nums[lo..hi] 进行切分// 使得 nums[lo..p-1] nums[p] nums[p1..hi]int p partition(nums, lo, hi); // 获取切分点 p// 对切分点左右两边的子数组分别进行递归排序sort(nums, lo, p - 1);sort(nums, p 1, hi);}// 切分函数用于确定切分点并重新排列数组元素private static int partition(int[] nums, int lo, int hi) {int pivot nums[lo]; // 选择第一个元素作为切分元素int i lo 1, j hi; // 定义两个指针 i 和 j// 使用双指针将数组划分为两部分一部分小于等于pivot一部分大于pivotwhile (i j) {while (i hi nums[i] pivot) {i; // 移动左指针直到找到一个大于pivot的元素}while (j lo nums[j] pivot) {j--; // 移动右指针直到找到一个小于等于pivot的元素}// 交换左右指针所指向的元素保证左边小于等于pivot右边大于pivotif (i j) {break; // 当左右指针相遇时退出循环}swap(nums, i, j); // 交换 nums[i] 和 nums[j]}// 将pivot放到合适的位置即使得左边元素小于等于pivot右边元素大于pivotswap(nums, lo, j); // 将切分元素放到最终位置return j; // 返回切分元素的下标}// 洗牌算法将输入的数组随机打乱private static void shuffle(int[] nums) {Random rand new Random(); // 创建随机数生成器int n nums.length;for (int i 0 ; i n; i) {// 生成 [i, n - 1] 的随机数int r i rand.nextInt(n - i); // 生成 [i, n - 1] 范围内的随机数swap(nums, i, r); // 将第i个元素与第r个元素交换}}// 原地交换数组中的两个元素private static void swap(int[] nums, int i, int j) {int temp nums[i]; // 临时保存 nums[i]nums[i] nums[j]; // 将 nums[j] 放到 nums[i] 的位置nums[j] temp; // 将临时保存的 nums[i] 放到 nums[j] 的位置} }
http://www.pierceye.com/news/4279/

相关文章:

  • 关于网站建设与维护论文十大开源软件
  • 重庆有那些制作网站的公司点商城域名注册多少钱
  • 石家庄免费建站天津网站建设品牌推广
  • 网站开发工具 n网站建设业务员怎么做
  • 当今网站开发技术的现状wordpress网站演示
  • 建立网站编程那个网站详情页做的好
  • 甘露园网站建设建网站需要备案吗
  • 济南网站设计建设中国开源网
  • 传统旅行社如何建设网站wordpress 响应 主题
  • 衡水移动网站建设价格wordpress 获取当前文章id
  • 网站建设建站网云部署Wordpress
  • 湖南企业网站营销设计百度网站建设工资
  • 电子商务网站建设基础步骤章丘网站开发
  • 单页面网站推广方法企业网站策划论文
  • 建设网站需要多长时间网页设计与制作基础
  • 深圳网站建设服务商哪些好?wordpress 地址栏
  • 个人网站做企业备案吗图像生成器在线制作
  • 网站网站做任务佣金违法电子商务网站开发软件
  • 为什么做网站需要服务器宝安区网络公司
  • 广元建设网站要多少钱智慧团建网站注册
  • 购物网站开发小结wordpress 添加地图
  • 网站运营 网站建设免费的黄页推广软件哪个好
  • 厦门网站建设方案书怎样做一个简单的网站
  • 百度 网站添加wordpress直达链接404
  • 网站备案需要多少天许昌seo推荐
  • 网站建设主要有哪些成本阿树wordpress
  • 手机网站 好处佛山专业的网页制作
  • 做好公众号 网站建设网上注册公司价格
  • 网站维护服务器信阳做网站的公司
  • 石柱网站制作网页qq空间登录