빠 른 정렬. - 다 중 스 레 드 로 빠 른 정렬.
5129 단어 JAVA
package com.spark;
import org.junit.Before;
import org.junit.Test;
import scala.tools.nsc.Global;
import java.util.Random;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Created by fanyuli on 2018/5/2.
*/
public class TestQuickSort {
int index = -1;
CountDownLatch countDownLatch = new CountDownLatch(2);
int[] data = new int[800000];
@Before
public void initData() {
Random r = new Random();
for(int i=0;i<data.length;i++) {
data[i] = r.nextInt(100);
}
}
@Test
public void testQuickSortThread() { //
ExecutorService executorService = Executors.newFixedThreadPool(2);
System.out.println(System.currentTimeMillis());
index = partition(
data,
0,
data.
length -
1); quickSortThread q1 =
new quickSortThread(
data,
0,
index -
1); quickSortThread q2 =
new quickSortThread(
data,
index +
1,
data.
length-
1); executorService.execute(q1); executorService.execute(q2);
try{
countDownLatch.await(); }
catch (Exception e) { e.printStackTrace(); }
for(
int i=
0;i <
data.
length;i++) {
//System.out.print(data[i] + "");
} System.
out.println(
"
\r
"+ System.
currentTimeMillis()); }
class quickSortThread
implements Runnable {
int
start;
int
end;
int[]
data;
public quickSortThread(
int[] data,
int start,
int end) {
this.
start = start;
this.
end = end;
this.
data = data; }
@Override
public void run() { quickSort(
data,
start,
end);
countDownLatch.countDown(); }
public void quickSort(
int[] data,
int left,
int right) {
if(left >= right)
return;
int i = partition(data,left,right); quickSort(data,left,i -
1); quickSort(data,i +
1,right); } }
@Test
public void runQuickSort () {/단일 스 레 드 로 정렬 시스템.
out.println(System.
currentTimeMillis()); quickSort(
data,
0,
data.
length -
1);
for(
int i=
0;i <
data.
length;i++) {
//System.out.print(data[i] + "");
} System.
out.println(
"
\r
"+ System.
currentTimeMillis()); }
public void quickSort(
int[] data,
int left,
int right) {
if(left >= right)
return;
index = partition(data,left,right); quickSort(data,left,
index -
1); quickSort(data,
index +
1,right); }
public int partition(
int[] data,
int left,
int right) {
int temp = data[left];
while(left < right) {
while(temp <= data[right] && left < right){ right--; } data[left] = data[right];
while(temp > data[left] && left < right){ left++; } data[right] = data[left]; } data[left] = temp;
return left; }}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JAVA 객체 작성 및 제거 방법정적 공장 방법 정적 공장 방법의 장점 를 반환할 수 있습니다. 정적 공장 방법의 단점 류 공유되거나 보호된 구조기를 포함하지 않으면 이불류화할 수 없음 여러 개의 구조기 파라미터를 만났을 때 구축기를 고려해야 한다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.