快速排序算法实现文件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;

}

}

java线程实现排序_【多线程实现快速排序】相关推荐

  1. java线程条件变量_多线程同步条件变量(转载)

    最近看<UNIX环境高级编程>多线程同步,看到他举例说条件变量pthread_cond_t怎么用,愣是没有看懂,只好在网上找了份代码,跑了跑,才弄明白 #include #include ...

  2. java线程锁机制_多线程之锁机制

    前言 在Java并发编程实战,会经常遇到多个线程访问同一个资源的情况,这个时候就需要维护数据的一致性,否则会出现各种数据错误,其中一种同步方式就是利用Synchronized关键字执行锁机制,锁机制是 ...

  3. java 线程 单例_多线程单例模式

    多线程单例模式 原文:https://blog.csdn.net/u011726005/article/details/82356538 1. 饿汉模式 使用饿汉模式实现单例是十分简单的,并且有效避免 ...

  4. java线程顺序输出_多线程按顺序输出ABC

    /** * @author mengwen E-mail: meng_wen@126.com * @date 创建时间:2016年8月30日 下午3:10:32 * @version 1.0 * @p ...

  5. java线程知乎_全网独家!知乎20K点赞的Java并发多线程笔记,简直堪称神仙级文档...

    有很多小伙伴都问过我,头条号里的关于java多线程的文章有pdf版本吗?我其实很想弄pdf,但是前段时间一直没时间去折腾,我把每个Java并发编程核心技术的都整理成了一个又一个的文档.昨天也是终于全部 ...

  6. java 线程的理解_浅谈对多线程的理解(一)

    今天我们先来聊聊有关线程的话题...... 一. 线程概述 1. 简单区分程序.进程和线程 程序是指一段静态的代码 进程是指正在执行的程序,将静态的代码运行起来 线程是指正在执行程序的小单元 举个栗子 ...

  7. java 线程组作用_浅析Java中线程组(ThreadGroup类)

    一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线 ...

  8. java 线程面试题_JAVA多线程面试题(一)

    1.进程和线程的区别 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和程序的单一进 ...

  9. java线程代码实现_Java 多线程代码实现讲解

    作为一个完全面向对象的语言,Java提供了类 java.lang.Thread 来方便多线程编程,这个类提供了大量的方法来方便我们控制自己的各个线程.那么如何提供给 Java 我们要线程执行的代码呢? ...

最新文章

  1. linux如何连接移动硬盘
  2. 02.iOS开发网络篇—HTTP协议
  3. Oracle入门(十三C)之高级查询(下)
  4. matlab 无向拓扑图,无向图绘画树状拓扑图算法
  5. VM克隆之后启动eth0找不到eth0:unknown interface:no such device
  6. Python编程高手之路——第三章:数据类型
  7. Casper 机制的历史起源:第一篇
  8. iptables防火墙基础
  9. angularjs 循环完之后执行的事件
  10. CF724G. Xor-matic Number of the Graph
  11. 【COCA】美国当代语料库常用高频词汇20200个(可直接复制)
  12. php 上传乱码_php上传文件名乱码了怎么办
  13. cnpm 安装yarn
  14. 「缠师课后回复精选」第15课:没有趋势,没有背驰。
  15. 电子科技大学计算机系王教授,王书振 | 个人信息 | 西安电子科技大学个人主页...
  16. .net 生成拼音码与五笔码
  17. 网络通信安全部分笔记二
  18. Failed to compile编译失败
  19. 据说是原CSDN排名第一的博客,我看到内容,确实被震憾了
  20. [转]Win10 莫名卡顿问题解决(1903-1909版本)

热门文章

  1. 荣耀v40可以升级华为鸿蒙,网传荣耀V40机型也能升级鸿蒙OS 首批更新机型有望是这5款...
  2. vue数组变化视图_vue对象数组数据变化,页面不渲染
  3. cefsharp 发送请求服务器_超高性能管线式HTTP请求(实践·原理·实现)
  4. vue点击弹窗自动触发点击事件的解决办法
  5. mysql二进制大文件_Mysql实例Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)...
  6. linux 更改父进程名称,[Linux进程]在父进程和子进程中分别修改变量
  7. Edge浏览器开发人员工具
  8. Raect Router 4 的使用 (1)
  9. 深入理解line-height与vertical-align——前端布局常用属性
  10. 正则表达式及测试工具