Java 快速排序算法实现-----面试
思路:
首先拿到数组第一个元素作为基数,然后遍历数组,比基数小的,放在左边,比基数大的,放在数组右边。
遍历一遍之后,再对数组左边和右边分别进行同样的快速排序
代码:
package com.xinyu.test;import java.util.Arrays;public class Test26 {public static void main(String[] args) {int []arr = new int[]{2,-1,4,18,1,3,6,-99};quickSort(arr,0,arr.length-1);System.out.println(Arrays.toString(arr));}/***** @param arr* @param start* @param end**** 快速排序思路:** 首先拿数组第一个位置的数,作为基点,比基点大的,直接略过* 比基数小的,那么交换位置,并且记住这个位置,因为在这个位置左边,都是比这个基数小的** 排序过一遍后,在对当前基数所在的位置的左边和右边分别进行再次的快速排序**/public static void quickSort(int [] arr, int start, int end){if (start >= end) {return;}//取cur 作为基数int cur = arr[start];//记录当前基数位置int position = start;//循环当前数组for (int i = start + 1; i <= end; i++){//如果当前数比基数小 那么交换位置if (arr[i] < cur) {arr[position] = arr[i];arr[i] = cur;//记录基数最新的位置position = i;}}//如果基数位置没有发生变化 那么就说明后面的数 都比第一个大 直接进行右边的排序就好if (position == start) {quickSort(arr,start + 1,end);}else {//如果基数位置发生了变化 那么再次按照同样的方法 对数组的左边 和 右边分别进行快排quickSort(arr,0,position);quickSort(arr,position,end);}}}
总结:
今天面试被问到快速排序的实现,当时第一感觉是实现不出来,面试结束后,我思考了半个小时,自己写出来了。记录一下。
Java 快速排序算法实现-----面试相关推荐
- JAVA快速排序算法实现
JAVA快速排序算法实现 private static void quickSort(int[] arr, int start, int end) {if(start < end) {int b ...
- Java 快速排序算法
简介 上一章我们学习了 Java 希尔排序算法,这一章,我们来学习快速排序算法,so,多了不说,继续老规矩,学习内容如下: 1.快速排序的定义 2.快速排序的思路 3.代码实现 1.快速排序的定义 快 ...
- java快速排序算法_JAVA版排序算法之快速排序示例
本文实例讲述了JAVA快速排序实现方法.分享给大家供大家参考,具体如下: package com.ethan.sort.java; import java.util.Arrays; import ja ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- java 快速排序_面试必不可少的几大排序算法,你掌握了吗?
从上学那一刻起,老师就说排序算法很重要,面试的时候考官常会问道,要我们认真的学习,出去工作的学长学姐也说这么说的,那么为了能在面试中取得好的印象,我们很有必要对算法进行了解,以便在面试中取得好的印象, ...
- java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码
有了前面一系列的铺垫和准备后,我们终于能走到至关重要的一刻.在本节,我们将用C语言开发快速排序算法,然后利用我们的编译器把它编译成java字节码,让C语言编写的快速排序算法能在java虚拟机上顺利执行 ...
- 快速排序算法(基于Java实现)
title: 快速排序算法(基于Java实现) tags: 快速排序算法 快速排序算法的原理与代码实现: 一.快速排序算法的原理 快排算法的思想是: 如果需要排序数组中下标从p到r之间的一组数据,我们 ...
- java 概率 算法_使用概率算法优化快速排序(JAVA)
前言 前面一篇文章系统介绍了快速排序算法,提到快速排序虽然平均时间复杂度为o(n*log2(n)),效率相对比较高.但是其在特殊情况下,比如降序的情况下,效率和冒泡排序一致,这就削弱了快速排序给人的好 ...
- 快速排序算法 java 实现
快速排序算法 java 实现 快速排序算法Java实现 白话经典算法系列之六 快速排序 快速搞定 各种排序算法的分析及java实现 算法概念 快速排序是C.R.A.Hoare于1962年提出的一种划分 ...
最新文章
- 虚拟服务器能加内存吗,虚拟服务器可以加内存吗
- git cherry-pick用法
- How to Build Your Own Blockchain Part 4.1 — Bitcoin Proof of Work Difficulty Explained
- Flex 3调试Flash Player 10完美解决
- 关于Java中的随机数产生
- 给java程序员网址_程序员常用网址,必须收藏
- 常用技巧 —— 离散化
- sonyxz2刷机教程,日版au刷欧版
- 小米手机打开报告mimu查看程序调试错误locat
- Mybatis“四大神兽”
- javascriptji c z s
- 计算机通信中ip,macid的主要作用和区别
- Ubuntu 安装xbmc播放器
- Ethernet协议
- Crowd Counting by Adaptively Fusing Predictions from an Image Pyramid (BMVC2018)
- 思科ACS5.8最新搭建教程-亲测可用
- 邮箱日期IP地址信用卡验证(正则表达式)
- 名词解释第八讲:公钥
- Python用imghdr模块识别图片格式
- 汇编 第九章 转移指令的原理
热门文章
- c语言四则运算实验报告,c语言四则运算实验报告.doc
- python官网支持货到付款吗_官网购买的iPhone12pro还没发货?试着用Python快速入手...
- C++知识点21——使用C++标准库(再谈string——string的搜索和数值转化)
- 记录一下python手动安装第三方库
- linux 服务启动依赖,linux下的系统服务介绍——init、systemd
- Redis重新连接弹性
- Vue计算属性和监听属性
- 进程、线程与应用程序域
- JAVA学习--反射属性操作
- 升级IOS8游戏上传自定义头像功能失效的问题