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

Day60.算法训练

912. 排序数组

  • 归并排序

class Solution {public int[] sortArray(int[] nums) {int lo = 0;int hi = nums.length - 1;int[] assist = new int[nums.length];sortArray(nums, assist, lo, hi);return nums;}private void sortArray(int[] nums, int[] assist, int lo, int hi) {if (lo >= hi) {return;}int mid = lo + (hi - lo) / 2;sortArray(nums, assist, lo, mid);sortArray(nums, assist, mid + 1, hi);merge(nums, assist, lo, mid, hi);}private void merge(int[] nums, int[] assist, int lo, int mid, int hi) {int p1 = lo;int p2 = mid + 1;int i = lo;while (p1 <= mid && p2 <= hi) {if (lessCmp(nums[p1], nums[p2])) {assist[i++] = nums[p1++];} else {assist[i++] = nums[p2++];}}while (p1 <= mid) {assist[i++] = nums[p1++];}while (p2 <= hi) {assist[i++] = nums[p2++];}for (int index = lo; index <= hi; index++) {nums[index] = assist[index];}}private boolean lessCmp(Comparable a, Comparable b) {return a.compareTo(b) < 0;}
}

  • 快速排序

class Solution {public int[] sortArray(int[] nums) {int lo = 0;int hi = nums.length - 1;sortArray(nums, lo, hi);return nums;}private void sortArray(int[] nums, int lo, int hi) {if (lo >= hi) {return;}int partion = partion(nums, lo, hi);sortArray(nums, lo, partion - 1);sortArray(nums, partion + 1, hi);}private int partion(int[] nums, int lo, int hi) {int k = nums[lo];int left = lo;int right = hi + 1;while (true) {while (right > 0 && gtCmp(nums[--right], k)) {if (right == lo) {break;}}while (left < hi && leCmp(nums[++left], k)) {if (left == hi) {break;}}if (left == right) {break;}exch(nums, left, right);}exch(nums, lo, right);return right;}private void exch(int[] nums, int left, int right) {int a = nums[left];nums[left] = nums[right];nums[right] = a;}private boolean leCmp(Comparable a, Comparable b) {return a.compareTo(b) < 0;}private boolean gtCmp(Comparable a, Comparable b) {return a.compareTo(b) > 0;}}

http://www.lryc.cn/news/248448.html

相关文章:

  • 深入了解Java8新特性-日期时间API之TemporalQuery、TemporalQueries
  • 记录一次现网问题排查(分享查域名是否封禁小程序)
  • linux下实现Qt程序实现开机自启动
  • TCP 基本认识
  • 智慧城市包括哪些内容?有哪些智慧城市物联网方案?
  • Arkts@Watch装饰器与内置组件双向同步深度讲解与实战应用【鸿蒙专栏-14】
  • iMazing是什么软件?2024最新版本如何下载
  • LeetCode(40)同构字符串【哈希表】【简单】
  • 【代码随想录算法训练营-第一天】【数组】704. 二分查找、27. 移除元素
  • [教程] 一文进阶Redis
  • 通用plantuml模板头
  • 网站公安备案流程
  • 关于使用若依,并不会自动分页的解决方式
  • 在PyCharm中配置PyQt5环境
  • SIFI 极值点拟合的详细推导过程
  • Kontakt v7.7.2(音频采样器)
  • Drawer抽屉(antd-design组件库)简单用法
  • Android控件全解手册 - 多语言切换完美解决方案(兼容7.0以上版本)
  • Android-P CameraSerivce
  • 21.Oracle的程序包(Package)
  • Spring 日志
  • webpack如何处理浏览器的样式兼容问题postcss
  • idea方法注释模版设置
  • NX二次开发UF_CURVE_create_isocline 函数介绍
  • 从0开始学习JavaScript--JavaScript 模板字符串的全面应用
  • 开源 vs 闭源:数字化时代的技术选择
  • Spring Boot项目Service类单元测试自动生成
  • Typescript中 interface 和 type 的区别是什么?
  • W2311294-万宾科技可燃气体监测仪怎么进行数据监测
  • Elasticsearch:向量搜索 (kNN) 实施指南 - API 版