C C JS 陣列亂序演算法

2021-09-26 05:41:14 字數 888 閱讀 5761

陣列亂序指的將陣列的每乙個元素隨機打亂,並且對於每乙個元素而言,它被放置到每乙個位置的概率都相等。

有很多演算法都能實現這個要求,其中knuth-durstenfeld shuffle演算法效能較高,其時間複雜度為o(n),空間複雜度為o(1),實現也簡單一些,這裡給出演算法的原理以及c++程式和c#程式。

其演算法原理具體如下:

已知乙個陣列a,元素個數為n,其索引為0~n-1;

令i = n - 1;

生成隨機數index,區間為[0, i];

交換a[i]與a[index];

如果i > 0,則i = i - 1並跳轉到步驟3;

結束。

#include

#include

template

<

class

t, size_t len>

void

shuffle

(t (

&a)[len])}

intmain()

;shuffle

(a);

return0;

}

public

static

void

shuffle

<

t>

(t a)

}public

static

void

main()

;shuffle

(a);

}

function

shuffle

(a)}

a =[1,

2,3,

4,5]

;shuffle

(a);

亂序陣列的演算法

在做開發的時候,遇到了乙個問題,比如說我想要乙個陣列,比如說空間大小為10,裡面的數是1 10,不能重複。比如 8,9,2,4,5,7,1,3,6,10.順序都是亂的,且是1 10,當時想了一會,感覺有點難實現,後來想了幾分鐘,居然實現了,後來再想的時候,突然不回了,怎麼也想不出來了,後來看自己的 ...

golang 陣列 slice 亂序

陣列亂序 方法1.sliceoutoforder 選定隨機數r 將下標r和下邊i交換,i 就是和當前最後一位交換 方法2.rand.perm 陣列長度 將原陣列下標按照隨機出來的資料賦值給另一陣列 package main import fmt import math rand import tim...

js陣列排序 亂序總結

arr.sort 預設公升序,可接受兩個引數,返回值為正數則交換位置 公升序,返回值為 1 arr.sort a,b 降序,返回值為1 arr.sort a,b 物件中根據屬性值排序 var arr function compare property console.log arr.sort com...