目的

面试需要, 方便自己后续复习, 作此简单记录

资源

在B站找的, 一个老师讲的高频面试题视频, 我觉得是偏难的, 似乎都是大厂的面试题, 小公司我觉得都不咋问(个人认为).

核心思想

选择一个基准点, 形成一个比基准点大的分区和比基准点小的两个分区. 然后递归的去处理. 结束标识: 子分区元素个数小于等于1.
思想: 分而治之(divide-and conquer).

单边循环快排(lomuto洛穆托分区方案)

  1. 选择最右元素作为基准点元素
  2. j指针负责找到比基准点小的元素, 一旦找到则与i进行交换
  3. i指针维护小于基准点元素的边界, 也是每次交换的目标索引
  4. 最后基准点与i交换, i即为分区位置

代码实现

    public static void main(String[] args) {int[] arr = {5, 3, 7, 2, 9, 8, 1, 4};quick(arr, 0, arr.length - 1);System.out.println(Arrays.toString(arr));}private static void quick(int[] arr, int low, int high) {if (low >= high) {return;}int p = partition(arr, low, high);quick(arr, low, p - 1);quick(arr, p + 1, high);}/*** 分区* <p>* 左边元素都比基准点小, 右边都比基准点元素大** @param arr  待排序数组* @param low  分区的下边界* @param high 分区的上边界* @return 基准点元素最后的索引*/private static int partition(int[] arr, int low, int high) {// 选择上边界作为基准点元素int pv = arr[high];int i = low;for (int j = low; j < high; j++) {if (arr[j] < pv) {swap(arr, i, j);i++;}}swap(arr, high, i);return i;}// 交换private static void swap(int[] arr, int j, int i) {int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}

面试题学习: 单边快速排序相关推荐

  1. 2009.11网络工程师考试案例试题学习攻略(1)

    2009.11网络工程师考试案例试题学习攻略(1) 源于在网络工程实践过程中对该领域的喜爱,2005年本人有幸顺利地通过了网络工程师的资格考试,后又顺利地通过了系统分析师的资格考试.之后开始了软考培训 ...

  2. 新华三2018校园招聘笔试面试题学习

    编程题学习: 7进制转10进制: public class Text5 {public static void main(String[] args) {int num=14;int sum=0;in ...

  3. 汽车理论matlab编程,汽车理论课后作业matlab编程详解(带注释)[试题学习]

    <汽车理论课后作业matlab编程详解(带注释)[试题学习]>由会员分享,可在线阅读,更多相关<汽车理论课后作业matlab编程详解(带注释)[试题学习](11页珍藏版)>请在 ...

  4. 2023最新java学习教程(学习路线+课程大纲+视频教程+面试题+学习工具)

    2023最新java学习教程汇总(学习路线+课程大纲+视频教程+面试题+学习工具) 目录 一.首先要了解什么是JAVA? 二.Java发展及就业前景分析 三.Java学习路线图 四.Java课程大纲 ...

  5. 算法学习之快速排序的C语言实现

    近几天在学习简单算法,今天看了一个快速排序和堆排序,堆排序还没搞懂,还是先把快速排序搞清楚吧 教程网上一艘一大堆,这里选择一个讲的比较通俗的的一个吧: http://blog.csdn.net/mor ...

  6. 探索初级算法学习笔记-快速排序法

    快速排序法学习笔记 #include<stdio.h>void swap(int *a,int *b) {int t;t=*a;*a=*b;*b=t; }void quickSort(in ...

  7. MySQL面试题学习笔记

    必做题目:https://sqlzoo.net/wiki/SELECT_basics/zh 常见的SQL面试题:经典50题,知乎:https://zhuanlan.zhihu.com/p/383540 ...

  8. 牛批!Alibaba内部学习指南+最新面试题+学习大纲+内部学习书籍,理论与实战双管齐下!

    阿里 Android进阶小刘是我的头条号,里面会不定期更新一些Android进阶学习视频,感兴趣可以关注一下! 面试前 阿里的实习生招聘我参加了内推批次和正式批次一共两场. 阿里的内推批次和正式批次的 ...

  9. Unity3d游戏开发工程师笔试题学习

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.学习背景 二.错题记录 前言 收到了盛趣公司的笔试题,在这之前赶紧突击练习一下,愿抱佛脚成功. 补充:昨天做了笔试 ...

最新文章

  1. mysql字符串外键约束_MySQL中的约束函数主外键
  2. 再见Spring!下一个开源框架更香!
  3. 2015 Multi-University Training Contest 1 - 1002 Assignment
  4. python 任务计划_使用Python添加计划任务
  5. 前端开发时间格式的转换方法_开发人员投资时间而不浪费时间的10种方法
  6. SAGA-GIS软件下载
  7. 经典面试题(22):以下代码将输出的结果是什么?
  8. git head指向老版本_Git最全总结
  9. tensorflow-reverse(反向传播)
  10. 软件测试的基础知识(五)
  11. 前端使用AngularJS的$resource,后端ASP.NET Web API,实现增删改查
  12. 基于AP6212实现 Airkiss NDK编程
  13. liscov替换原则
  14. 论文阅读笔记:A CRITIQUE OF SELF-EXPRESSIVE DEEP SUBSPACE CLUSTERING,自表达深度子空间聚类批判
  15. pyscripter支持python什么版本_PyScripter|PyScripter(Python集成开发环境)下载v3.4.2.0官方版64位/32位 - 欧普软件下载...
  16. H5直播之MSE(Media Source Extensions)
  17. 牛牛的算术(公式推导)
  18. ORACLE公司的历史
  19. Unity3D UI多元素布局
  20. Camera | 2.MIPI、CSI基础

热门文章

  1. 【组合数学】 HDOJ 5184 Brackets
  2. Axure的下载和安装
  3. Please contact your system administrator. Add correct host key in /Users/*********/.ssh/known_hosts
  4. 解决报错:Mapped Statements collection already contains value for...
  5. SQL SERVER 2016 ctp3.3安装
  6. JavaScript4种数组随机选取实战源码
  7. 10 Android 植物人大战僵尸-生成僵尸
  8. 实验--mpls ospf sham-link
  9. 【寿命预测】基于DLSTM网络的机械剩余使用寿命预测方法
  10. fm计算机,荔枝FM电脑版