量子猴排(Quantum Bogo sort)

排序原理

原理很简单,如果数组不是有序的,就洗一次牌,直至数组有序为止

时间复杂度

最佳情况O(n),平均情况O(n×n!)

代码如下:

 1 import java.util.Random;
 2
 3 public class QuantumBogo {
 4     private static Random random = new Random();
 5
 6     public static void sort(Comparable[] a){
 7 //        int count = 0;
 8         while (!isOrder(a)) {
 9             shuffle(a);
10 //            count++;
11         }
12     }
13
14     private static boolean isOrder(Comparable[] a){
15         for (int i = 1; i < a.length; i++) {
16             if (a[i-1].compareTo(a[i]) > 0)
17                 return false;
18         }
19         return true;
20     }
21
22     private static void shuffle(Comparable[] a){
23         int n = a.length;
24         for (int i = 0; i < n; i++) {
25             int r = i + random.nextInt(n-i);
26             Comparable temp = a[i];
27             a[i] = a[r];
28             a[r] = temp;
29         }
30     }
31
32     private static void show(Comparable[] a){
33         for (int i = 0; i < a.length; i++)
34             System.out.print(a[i] + " ");
35         System.out.println();
36     }
37
38     public static void main(String[] args){
39         Integer[] a = new Integer[12];
40         for (int i = 0; i < 12; i++) {
41             a[i] = random.nextInt(65536);
42         }
43         show(a);
44         sort(a);
45         show(a);
46     }
47 }

原文地址:https://www.cnblogs.com/merryituxz/p/9932431.html

时间: 2024-11-10 14:30:28

量子猴排(Quantum Bogo sort)的相关文章

Quantum Bogo sort浅谈

1.普通的猴子排序(bogo sort) 猴子排序百科 en.wikipedia.org/wiki/Bogosort 不停的随机打乱序列,然后检查,直到排好序 复杂度O(n*n!) while not isInOrder(deck): shuffle(deck) 2.量子猴排(Quantum Bogo sort) 使用量子计算机 http://baike.baidu.com/view/18645.htm 关于薛定谔的猫 https://en.wikipedia.org/wiki/Schrödin

JavaScript快排与原生sort的测试

今天工作室断网!果断回宿舍,不然各种资料都没有.(他说将来会找到!)不好意思,又哼起来了.进入主题,大家都知道,快排是各种排序算法中,最高效的也是应用最广的,还有更重要的一点,面试特别爱考的! 其实大家或多或少都听说过快排,也就是先从取出一个基准值,然后再把其它的数与之相对比,小的放左边的集合里,大的放右边的集合里,再通过递归不断重复该步骤,实现最高效率的quickSort. Talk is cheap, show you my code! 排序结果我就不写出来啦,大家都会数大小,哈哈哈. 刚说

结构体快排回顾(sort)

一般来说,我做竞赛的时候排序一般用快排 很快很方便 普通sort(从小到大) sort(a,a+n); 直接贴一段代码吧,包含了vector,sort,结构体等简单东西综合 #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef struct example { int elem1; int elem2; }example; /*这个compariso

九章算法面试题70 排颜色II sort colors

九章算法官网-原文网址 http://www.jiuzhang.com/problem/71/ 题目 给定一个有n个对象(包括k种不同的颜色,并按照1到k进行编号)的数组,将对象进行分类使相同颜色的对象相邻,并按照1,2,...k的顺序进行排序. 在线测试本题 http://www.lintcode.com/zh-cn/problem/sort-colors-ii/ 解答 这道题有两种方法. 方法一: 可以借助一个O(k)的数组bucket,然后扫一遍原来的数组,统计每一种颜色有多少个存放在数组

Google的量子计算之梦:比传统计算机快上1亿倍?

Google的量子计算之梦:比传统计算机快上1亿倍? 本文来自technologyreview,作者 Tom Simonite ,机器之心编译出品,参与:salmoner,薛矽,汪汪,微胖. 近日,谷歌宣布他们的量子计算机比传统计算机快上1亿倍,有人欢呼雀跃,有人提出质疑.让我们来看看背后的故事吧,看看物理学家John Martinis 如何帮谷歌实现炙手可热的量子计算之梦.他或许正手握着量子计算的圣杯,本文选自麻省理工科技评论. Martini团队追寻的神奇计算机 John Martinis用

冒泡,快排代码+注释

冒泡: package Sort; public class BubbleSort { public static void main(String[] args) { int[] list = new int[]{12,14,3,24,1,33}; int[] nums = bubbleSort(list); for(int i = 0;i< list.length;i++){ System.out.println(nums[i]); } } public static int[] bubbl

sort的入门级notes

段首依旧复制 嗯,受人所托,顺便整理的 英文渣 侵删. // 注释的部分是解说(废话)和不怎么重(kǎo)要(chá)的 错误请指正 大晚上的先写原理 //冒泡排序 冒泡是对此排序形象的比喻…… 甚至非相关专业的同学也能对这种排序有十分直观的认识 大概就是数越大,代表的泡泡越大,浮力越大,当与其他较小的泡泡相遇时,更容易浮上去 结果序列便是按“浮力”大小排序的了 //插入排序 divide and conquer 大体思想是在已经有序的序列里插入新元素 //桶排序 对于uint来说,桶排序的段长

qsort与sort

快排是我们平常敲代码和比赛的时候     经常使用到的方法 qsort是函数库中自带的函数    这是一个标准的快排函数 而sort比qsort更是好用    sort对于不同大小的数组   会使用不同的排序方法 所以我在使用sort之后   就没有使用过qsort了 我今天在这回顾一下qsort 和sort 的使用方法 qsort排序方法(升序) 一.对int类型数组排序 int num[10010]; int cmp ( const void *a , const void *b ) { r

量子时空观与黑洞研究

1986年,印籍科学家Abhay Ashtekar(1949- ) 使用量子时空观把爱因斯坦广义相对论(引力理论)又一次写了一遍,引发新一轮理论物理"量子化"的国际浪潮. 近二十年以来.在理论物理学中出现了一门新分支:量子几何(Quantum Geometry).随后,有人把量子几何观念引用到施瓦茨球(即"黑洞")的怪异球面上,企图彻底消除施瓦茨球的"奇点".什么是量子几何呢? 让我们想象一种情景:把一个水晶球彻底打碎,而且把碎片研磨成微细的粉末