• java算法之猴子排序睡眠排序


    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    public class A {
    private volatile int anInt = 0;
    private volatile int jkl = 0;
    public static void main(String[] args) {
    A a = new A();
    Integer[] integers0 = {5,4,7,1,9,3,8,2,0};
    List<Integer> integers0s = a.sleepSort(Arrays.asList(integers0));
    while (true){
    if (a.anInt == integers0.length){
    System.err.println("睡眠排序:" + integers0s);
    break;
    }
    }

    Integer[] integers1 = {5,4,7,1,-9};
    Integer[] integers2 = {5,4,7,1,-9,-3};
    Integer[] integers3 = {5,4,7,1,-9,-3,8};
    Integer[] integers4 = {5,4,7,1,-9,-3,8,2};
    Integer[] integers5 = {5,4,7,1,-9,-3,8,2,3};
    List<Integer[]> list = new ArrayList<>();
    list.add(integers1);
    list.add(integers2);
    list.add(integers3);
    list.add(integers4);
    list.add(integers5);
    int i = 1;
    for (Integer[] integers : list) {
    long start = System.currentTimeMillis();
    A aa = new A();
    while (true){
    List<Integer> bogoSort = a.bogoSort(Arrays.asList(integers));
    if (aa.isSort(bogoSort)){
    System.err.println(bogoSort);
    break;
    }
    //System.out.println(bogoSort);
    }
    long end = System.currentTimeMillis();
    System.err.println("integers" + i++ + "耗时:" + (end - start) + "毫秒");
    }


    }
    public List<Integer> sleepSort(List<Integer> list) {
    List<Integer> result = new ArrayList<>();
    for (Integer integer : list) {
    new Thread(() -> {
    try {
    Thread.sleep(integer);
    result.add(integer);
    anInt++;
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }).start();
    }
    return result;
    }

    public List<Integer> bogoSort(List<Integer> list) {
    jkl = 0;
    List<Integer> result = new ArrayList<>();
    for (Integer integer : list) {
    new Thread(()->{
    try {
    Thread.sleep(1);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    synchronized (result){
    result.add(integer);
    jkl ++;
    }
    }).start();
    }
    while (true){
    if (jkl == list.size())
    return result;
    }
    }
    public boolean isSort(List<Integer> list){
    Integer i = list.get(0);
    for (Integer integer : list) {
    if (integer < i){
    return false;
    }
    i = integer;
    }
    return true;
    }
    }

    睡眠的精度不知道还有没有什么优化的办法?
  • 相关阅读:
    一个很好用的linux下系统清理工具
    怎样将linux+qt在1S中内启动的幻灯片教程
    通过 ulimit 改善系统性能
    UBI文件系统
    利用BLCR加快Android的启动过程
    工作队列中的sleep导致控制台无法输入问题
    android system setup and building (3)
    物理地址和虚拟地址1 (MMU)
    对 makefile 中 eval 函数的学习体会
    location.href语句与火狐不兼容的问题
  • 原文地址:https://www.cnblogs.com/bzdofj/p/13806887.html
Copyright © 2020-2023  润新知