BloggerAds

2011年12月7日 星期三

洗牌演算法(不重複亂數排序)

目的:把陣列內容搞亂


複雜度log(n)


比每亂數新增一個再去裡面判斷快太多了


絕不可能重複


因為他是先排好陣列 再亂數兩兩交換


===============================================


int x[10]={0};
 
for(int i=0;i<=9;i++){
x[i]=i; //將x陣列的1~10元素依序填入資料,例如x[1]=1,x[2]=2
}
 
 
for(int i=0;i<=x.length;i++){
int n1=rand()%10; //產生0~9的亂數
int n2=rand()%10;
//將陣列資料進行交換(打散)
int temp=x[n1];
x[n1]=x[n2];
x[n2]=temp;
 
}

===============================================

也可用在字串Array

可以先把String Array內容放進Map裡

前面的key為整數 

把key亂數排序後

再把相對應的value> String 放進陣列裡