快速排序java代碼 猴子排序算法?
猴子排序算法?什么樣的排名是猴子排名?Monkey代表無(wú)序,Monkey ranking表示無(wú)序,直到有序?yàn)橹?。這樣做的真正意義是對(duì)無(wú)序數(shù)組進(jìn)行排序,并查看它是否會(huì)被排序。這是一個(gè)概率事件??赡芤淮沃?/p>
猴子排序算法?
什么樣的排名是猴子排名?
Monkey代表無(wú)序,Monkey ranking表示無(wú)序,直到有序?yàn)橹埂?/p>
這樣做的真正意義是對(duì)無(wú)序數(shù)組進(jìn)行排序,并查看它是否會(huì)被排序。這是一個(gè)概率事件??赡芤淮沃缶陀嗁?gòu)了,也可能多次之后仍然沒(méi)有訂購(gòu)。
實(shí)現(xiàn)方法如下:
1,定義數(shù)組
2,數(shù)組隨機(jī)
3,檢查數(shù)組是否有序,繼續(xù)無(wú)序,有序時(shí)停止
這樣一個(gè)簡(jiǎn)單的實(shí)現(xiàn)思想,但是它需要用到隨機(jī)化的知識(shí)和標(biāo)志變量的實(shí)現(xiàn)技巧
代碼如下://得到的數(shù)據(jù)表明排序前要排序多少次
#include<iostream>
使用namespace STD
int source[10],flag[10],res[10
]int sort(){
memset(flag,1,sizeof(flag))
int num=10,count=0
while(num){
int t=rand()//生成介于0-9之間的數(shù)字
if(flag[t]}{
res[count]=source[t
]num-->]}for(int i=0I<9i){
]if(res[i]>res[i 1]}{//僅從小到大的排列
返回0
}
}}
}]return 1]}]int Main(){
int count=0
for(int i=0I<10i){
CIN>>source[i
}
while(sort()!=1){
count]}
cout<< “run”<< count< “times”<< ndl
return[0
請(qǐng)問(wèn)大神最奇葩的排序算法是什么?
我想介紹一下這個(gè)睡眠排序算法,Dana在4chan上匿名發(fā)布的消息:
此算法的基本原理是為數(shù)組中的每個(gè)數(shù)據(jù)X創(chuàng)建一個(gè)新線程:
●睡眠時(shí)間X秒
●打印輸出X
所有數(shù)據(jù)將同時(shí)被排序。
它適用于所有非負(fù)值數(shù)據(jù)。
在網(wǎng)上論壇上很少看到這樣的排序算法。