JAVA版排序算法之快速排序示例
作者:EthanQ 发布时间:2023-04-20 04:37:53
标签:JAVA,排序算法,快速排序
本文实例讲述了JAVA快速排序实现方法。分享给大家供大家参考,具体如下:
package com.ethan.sort.java;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class QuickSort {
public static <E extends Comparable<? super E>> List<E> quickSort(List<E> arr) {
if(arr.size()<=1) {
return arr;
}
E pivot = arr.get(0);
//每次递归都会初始化,每次list都不一样
List<E> less = new LinkedList<E>();
//枢轴,这个集合只有一个元素,每次都初始化,都不一样
List<E> pivotList = new LinkedList<E>();
List<E> more = new LinkedList<E>();
for(E i:arr){
if(i.compareTo(pivot)<0) {
less.add(i);
} else if(i.compareTo(pivot)>0) {
more.add(i);
} else {
pivotList.add(i);
//System.out.println("p---->"+i);
}
}
//递归
less = quickSort(less);//比pivot小的
//又进行quicksort,对more,再分成两部分
more = quickSort(more);
//拼接 less pivot more
less.addAll(pivotList);
//pv-------->[23],到最后只有一个元素了
System.out.println("pv-------->"+pivotList);
less.addAll(more);
return less;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Integer[] arr = {23,2,8,43,22,32,4,5,34};
List l = quickSort(Arrays.asList(arr));
Iterator i = l.iterator();
while(i.hasNext()) {
System.out.println(i.next());
}
}
}
希望本文所述对大家java程序设计有所帮助。


猜你喜欢
- 随着互联网的蓬勃发展,越来越多的互联网企业面临着用户量膨胀而带来的并发安全问题。本文着重介绍了在java并发中常见的几种锁机制。1.偏向锁偏
- 当我们在页面上进行selenium.type()或者selenium.click()操作的时候,往往需要需要等待一个元素的出现,对于一般的网
- 前言SQL注入漏洞作为WEB安全的最常见的漏洞之一,在java中随着预编译与各种ORM框架的使用,注入问题也越来越少。新手代码审计者往往对J
- /// <summary> /// 将List转换成Da
- Wrapper条件构造器updateForSet更新官方文档:https://baomidou.gitee.io/mybatis-plus-
- 第三方jar包在开发工具中引入后编译没问题, 启动调试包括打包时会提示找不到jar包的错误.需要上传到maven仓库中,并在pom文件内引入
- 简单版/** * 产生4位随机数(0000-9999) * * @return 4位随机数 &nb
- eclipse运行tomcat提示端口被占用今天碰到一个问题,在eclipse中运行一个程序,eclipse里面的tomcat一启动就报错说
- tk.mybatis扩展自己的通用mapper目的:tk.mybatis 提供的通用mapper,虽然使用方便,不过在有些sql还是不能满足
- 本文记录一下,我从AndroidStudio 2.3.3升级到3.0,再升级到3.0.1一路上遇到的输入法之坑以及解决方案。前些天把Andr
- 在一些允许用户自定义栏目顺序的app(如:凤凰新闻、网易云音乐等),我们可以方便地拖拽列表项来完成列表的重新排序,进而完成对栏目顺序的重排。
- 前言上一节我们说到从HttpWebHandlerAdapter的handle方法说起到DispatcherHandler的调用流程那么Htt
- 一、创建项目创建一个简单的Java项目,其中Main.java为主函数,包含main方法:二、完成JAR配置进入File->Proje
- 本文实例讲述了Android学习笔记之应用单元测试。分享给大家供大家参考,具体如下:第一步:在AndroidManifest.xml中加入如
- 看前欣赏美图!上才艺!目录 一.顺序结构二.分支结构1.if语句2.switch 语句 三. 循环结构1 .while 循环2. break
- 今天有同事用swagger2开发时,有一方法返回Map<String,List<Object>>出现无法解析错误。P
- Java公众号【Java技术迷】一个在互联网领先地位,微信搜索【Java技术迷】第一时间阅读最新文章,通过下面下载链接,即可获得我精心整理的
- 脚本之家在以前介绍过关于C#创建、部署、调用WebService的教程,有兴趣的可以参阅:.NET C#创建WebService服务简单实例
- LayoutInflater.inflate源码详解LayoutInflater的inflate方法相信大家都不陌生,在Fragment的o
- 目录首先,写一个需求文档:一、登录界面1.界面2.登录3.退出二、开始游戏界面三、缓冲加载游戏界面四、游戏主界面五、结束界面上代码首先,写一