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.pswp.cn/news/371659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371659.shtml
英文地址,請注明出處:http://en.pswp.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…