java线程实现排序_【多线程实现快速排序】

快速排序算法实现文件QuickSort.java

package quick.sort;

import java.util.concurrent.Callable;

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;

public class QuickSort implements Callable{

private int[] array;

private final int start;

private final int end;

private int middle;

Lock lock = new ReentrantLock();

public QuickSort(int start,int end,int[] array){

this.start = start;

this.end = end;

this.array = array;

}

@Override

public Point call() {

/*进行排序*/

quickSort();

return new Point(start,end,middle);

}

public void quickSort(){

int head,tail;

head = start;

tail = end + 1;

while(true){

/*找到一个比head大的*/

do{

head++;

}while(!(array[head] >= array[start] || head == end));

/*找到一个比head小的*/

do{

tail--;

}while(!(array[start] >= array[tail] || tail == start));

if(head < tail)

swap(head,tail);

else

break;

}

swap(start,tail);

middle = tail;

}

public void swap(int a,int b){

int temp = 0;

temp = array[a];

array[a] = array[b];

array[b] = temp;

}

}

class Point{

private int start;

private int end;

private int middle;

public Point(int start,int end,int middle){

this.start = start;

this.end = end;

this.middle = middle;

}

public int getStart(){

return start;

}

public int getEnd(){

return end;

}

public int getMiddle(){

return middle;

}

public boolean compareStartMiddle(){

return start < middle - 1;

}

public boolean compareMiddleEnd(){

return middle + 1 < end;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Gitolite搭建Gitserver

Gitolite是一款Perl语言开发的Git服务管理工具。通过公钥对用户进行认证。并可以通过配置文件对些操作进行基于分支和路径的精细控制。Gitolite採用的是SSH协议而且使用SSH公钥认证。因此不管是管理员还是普通用户。都须要对SSH有所了解。Gitolite的官网是&#xff1a;https://…

java任务分支和合并_合并/分支战略

我会给出与Adarsh Shah相同的建议&#xff0c;因为在大多数情况下&#xff0c;2个分支(MAIN&#xff0c;RELEASE)就足够了&#xff0c;并且使用feature branches用于你不想立即提交到MAIN的东西&#xff0c;因为它需要一段时间才能完全准备好测试 . 通过RELEASE&#xff0c;我指…

Spring安全:防止暴力攻击

Spring Security可以为您做很多事情。 帐户被封锁&#xff0c;密码盐。 但是蛮力阻断剂呢&#xff1f; 那是你必须自己做的。 幸运的是&#xff0c;Spring是一个非常灵活的框架&#xff0c;因此对其进行配置并不是什么大问题。 让我向您展示一些如何针对Grails应用程序执行…

NopCommerce计划任务

NopCommerce计划任务转载于:https://www.cnblogs.com/chenjz/p/6293210.html

简单谈谈js中的MVC

MVC是什么&#xff1f; MVC是一种架构模式&#xff0c;它将应用抽象为3个部分&#xff1a;模型&#xff08;数据&#xff09;、视图、控制器&#xff08;分发器&#xff09;。 本文将用一个经典的例子todoList来展开&#xff08;代码在最后&#xff09;。 一个事件发生的过程&a…

BTrace:Java开发人员工具箱中的隐藏宝石

这篇文章是关于BTrace的 &#xff0c;我正在考虑将其作为Java开发人员的隐藏宝藏。 BTrace是用于Java平台的安全&#xff0c;动态跟踪工具。 BTrace可用于动态跟踪正在运行的Java程序&#xff08;类似于DTrace&#xff0c;适用于OpenSolaris应用程序和OS&#xff09;。 不久&am…

python 图片转视频ffmpeg_python图片转视频(opencv),ffmpeg压缩视频

要注意&#xff1a;1. 图片传视频要自己设置帧率和分辨率2.读取图片后分辨率要resize为和视频分辨率一样才可以3.写完.avi视频后视频比较大&#xff0c;用ffmpeg将avi视频压缩为mp4import cv2from cv2 import VideoWriter, VideoWriter_fourcc, imread, resizeimport osfrom su…

门面模式

门面模式的定义 门面模式&#xff08;Facade Pattern&#xff09;也叫做外观模式&#xff0c;是一种比较常用的封装模式&#xff0c;其定义如 下&#xff1a; Provide a unified interface to a set of interfaces in a subsystem.Facade defines a higher-level interface tha…

Mysql数据库申请

前段时间大部门下新成立了一个推广百度OCR、文字识别、图像识别等科技能力在金融领域应用的子部门。因为部门刚成立&#xff0c;基础设施和人力都是欠缺的。当时分到我们部门的任务是抽调一个人做新部门主站前端开发工作。本来说的是只负责页面的开发工作。当我参加过需求品审会…

Spring–添加SpringMVC –第2部分

在上一部分中&#xff0c;我们为经理和员工实现了控制器。 既然我们知道了解决方法&#xff0c;我们将做很少&#xff08;但仅做很少&#xff09;更复杂的事情–任务和时间表的控制器。 因此&#xff0c;让我们从org.timesheet.web开始。 TaskController 。 首先创建一个类&…

php 正则分隔_探讨PHP函数split()如何使用正则表达式切割字符串

对于初学者来说&#xff0c;掌握PHP中常用函数的用法&#xff0c;是其继续学习的基础。今天我们就为大家详细介绍有关PHP函数split()的一些使用方法&#xff0c;希望大家能通过这篇文章介绍的内容增加自己的知识库。说明array split ( string $pattern, string $string [, int …

通用的ProtostuffSerializer for Java

以前使用 protobuf或protostuff的时候觉得很麻烦&#xff0c;每个类都要单独定制&#xff0c;于是封装了一个类。 同事测试过&#xff0c;性能和压缩率都很好&#xff0c;尤其是相比json的序列化。 需注意&#xff1a;只支持Pojo类&#xff08;即需要有get/set方法&#xff09;…

SAS笔记(6) PROC MEANS和PROC FREQ

PROC MEANS和PRC FREQ在做描述性分析的时候很常用&#xff0c;用法也比较简单&#xff0c;不过这两个过程步的某些选项容易忘记&#xff0c;本文就梳理一下。 在进入正文前&#xff0c;我们先创建所需的数据集TEST_SCORES&#xff1a; DATA TEST_SCORES; INPUT COUNTY : $9. SC…

休眠:保存vs持久并保存或更新

save和saveOrUpdate之间的区别是什么或save和persist之间的区别是任何Hibernate面试中常见的面试问题&#xff0c;就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种通过save &#xff0c; saveOrUpdate和persist等方法将对象保存到数据库中的方法。…

php搜索数据库设计,PHP数据库搜索功能设计

其实搜索功能的设计很简单&#xff0c;几行代码就可以完成。下面是form表单。从表单发出的数据名为search&#xff0c;然后发送到../admin/article_SearchResult.php这个文件处理。下面讲下article_SearchResult.php这个文件如何实现搜索。$searchs $_POST[‘search‘];?>…

2016 Android Top 10 Library

过去的 2016 年&#xff0c;开源社区异常活跃&#xff0c;很多个人与公司争相开源自己的项目&#xff0c;让人眼花缭乱&#xff0c;然而有些项目只是昙花一现&#xff0c;有些项目却持久创造价值&#xff0c;为开发者提供了极大的便利&#xff0c;这些终究由时间来判断。今天&a…

集成JavaFX和Swing

我刚刚完成了对使用Swing的应用程序组件的重写&#xff0c;现在正在使用JavaFX&#xff0c;最后得到了与更大的swing应用程序集成的JavaFX组件。 这是一个很大的应用程序&#xff0c;重写花了我一段时间&#xff0c;最后一切都很好&#xff0c;我很高兴自己做到了。 您可能想在…

提示错误:“应为“providerInvariantName”参数的非空字符串。”

我在调试Petapoco的T4模版的时候&#xff0c;链接一直报如题那个错误。在定性问题为配置文件后找的原因如下&#xff1a; <connectionStrings><add name"这个不行" connectionString"Data Sourcexxx;Initial Catalog数据库名;User ID帐号;Password密码…

php oop面试题,PHP面试题 - 对面向对象的理解

具体的题目应该是&#xff1a;什么是面向对象&#xff1f;主要的特征是什么&#xff1f;当然还有很多类似的题目&#xff0c;如果你说一下你对面向对象的理解&#xff0c;或者是你对比一下面向过程等等&#xff0c;诸如此类吧&#xff1f;如果我来回答这个问题&#xff0c;我会…

NOIP2014自测(晚自习两节+上午两节 共5个小时)

昨天刚刚考完试然后就翘晚自习跟今天上午两节课的语文和英语做做noip2014的题目。然后去评测了一番。首先day1day2的t1基本都是模拟&#xff0c;一看就出思路那种&#xff0c;直接ac掉。代码如下 day1t1&#xff1a;#include<iostream>#define maxn 209using namespace s…