猴子排序是一種什麼樣子的排序呢?
猴子代表亂的意思,猴子排序的意思就是亂排序,直到有序為止。
這個真實的含義就是把一個無序的陣列進行亂排序,然後看其是否會有序,這是個機率性事件,有可能一次之後就有序了,也有可能很多次後依然無序。
實現方法如下:
1,定義陣列
2,陣列隨機
3,檢驗陣列是否有序,無序繼續,有序了就停止
就是如此簡單的實現思路,但是卻要用到隨機化的知識和標誌變數的實現技巧
程式碼如下: //得到的資料是說明了排序多少次之後才有序
#include <iostream>
using 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()%10; //生成0-9之間的數
if(flag[t]){
res[count++] = source[t];
num--;
}
for(int i=0;i<9;i++){
if(res[i]>res[i+1]){ //只有是從小到大的排列才行
return 0;
return 1;
int main(){
int count = 0;
for(int i=0;i<10;i++){
cin>>source[i];
while(sort()!=1){
count++;
cout<<"共運行了"<<count<<"次"<<endl;
猴子排序是一種什麼樣子的排序呢?
猴子代表亂的意思,猴子排序的意思就是亂排序,直到有序為止。
這個真實的含義就是把一個無序的陣列進行亂排序,然後看其是否會有序,這是個機率性事件,有可能一次之後就有序了,也有可能很多次後依然無序。
實現方法如下:
1,定義陣列
2,陣列隨機
3,檢驗陣列是否有序,無序繼續,有序了就停止
就是如此簡單的實現思路,但是卻要用到隨機化的知識和標誌變數的實現技巧
程式碼如下: //得到的資料是說明了排序多少次之後才有序
#include <iostream>
using 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()%10; //生成0-9之間的數
if(flag[t]){
res[count++] = source[t];
num--;
}
}
for(int i=0;i<9;i++){
if(res[i]>res[i+1]){ //只有是從小到大的排列才行
return 0;
}
}
return 1;
}
int main(){
int count = 0;
for(int i=0;i<10;i++){
cin>>source[i];
}
while(sort()!=1){
count++;
}
cout<<"共運行了"<<count<<"次"<<endl;
return 0;
}