1樓:匿名使用者
用遞迴吧,總體思想猛悄是:
第i個的取值的方法枝咐渣是:從讓第i個取1到n,如果前i-1都沒有取這個值,則第i個取這個值。
#define n 4
int a[n];
bool randarry(int iindex)if(n ==iindex)
for(int i = 0; i < n; i++)printf("%d\t", a[i]);
printf("");
return true;
int ivalue = 1;
嘗試每乙個值簡喊。
while(ivalue <=n)
bool bfind = false;
檢視前幾個數字是否已經取了該值。
for(int i = 0; i < iindex; i++)if(ivalue ==a[i])
bfind = true;
break;
if(true ==bfind)
ivalue++;
continue ;
a[iindex] =ivalue;
randarry(iindex + 1);
ivalue++;
return true;
int main()
賦初始值。for(int i = 0; i< n ; i++)a[i] =0;
randarry(0);
return 0;
2樓:匿名使用者
如果說把所有可能情況都輸出,那麼就是要求全排列吧。如果只是簡單的打亂,那麼就差仿謹可大羨以隨機交換兩虛基個數,迴圈n次,目的就達到了。
3樓:匿名使用者
#include
#include
void shuffle(t* arr, size_t len)
int nloop = len / 2;
char odd = len % 2 !=0;
assert(arr);
for(int i=0; iint r , tmp;
if( odd &&i==nloop-1))
r = int)((float)rand()*i/rand_max/nloop)-1;
elser = int)((float)rand()*i/rand_max/nloop);
tmp = arr[i];
arr[i] =arr[i+nloop];
arr[i+nloop] =tmp;
迴圈1/襲消2次就行了,n為奇數時將中間那個數鉛禪友再跟後面的數交換一次,保證中間那個數肯定會被換位置。
這樣呼叫rand( )的次數就只有n/2次,沒必要迴圈n次,因為rand本來就很耗時槐槐,能省就省吧。
【j**a】求助怎麼把乙個陣列元素隨機打亂順序,謝謝~~~
4樓:網友
new乙個長度為10000的鍵值對,陣列a做健,值為隨機數,用值排序輸出。排序的時候重複的按原順序,實際還是隨機。
5樓:網友
暈。不用那麼麻煩。
先轉化為list(為什麼不一開始就用list呢?)例:string arr = new string ;
list list = ;
直接呼叫shuffle,就是隨機排序。
例:;直接輸出就是你想要的結果。
6樓:miho蓓
樓上正解。
collections本來就是集合的幫助類。
做運算 用它再合適不過了··
j**a中 我的陣列已有內容 怎樣把這些內容給亂序。。。
7樓:網友
隨便怎麼寫都可以,你也可以自己寫個演算法,隨機兩兩交換。
8樓:網友
把陣列的值裝到set裡,然後取回。
9樓:匿名使用者
random方法 限定下隨機範圍 然後隨機輸出就行了。
c語言中如何將陣列亂序
10樓:匿名使用者
可以這樣:
srand(time(0));
for(i=0;i就是每次生成兩個0到8之間的隨機數,然後以它們作為下標,交換兩個位置的數字,只要n足夠大,應該能夠達到要求。
11樓:
用c中取隨機數的函式來實現。
randomize()用於初始化隨機種子,程式中一般只寫一次random(int n)求 0<= i < n 的整數。
用隨機函式產生的數來作陣列的下標,用1-9數字分別對其賦值,但要確保取得的隨機數每次都不相同。我的思路是這樣的,不知道有沒有別的方法。
12樓:網友
用隨機函式產生的數來作陣列的下標,就可以了。
如何實現nsarray中的元素隨即亂序
13樓:匿名使用者
你可以寫個for迴圈,1.取罩世出array[arc4random_uniform(;2.把取出的數物亮肢組元素新增到乙個新的陣列這只是個想法,能不能實現你試試鍵衡吧。
用c語言對陣列內元素亂序排列並輸出
14樓:網友
#include
int main()
int i,j,k,l,m,n,x,y;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
if(j!=i)
for(k=0;k<8;k++)
if((k!=i)&&k!=j))
for(l=0;l<8;l++)
if((l!=i)&&l!=j)&&l!=k))for(m=0;m<8;m++)
if((m!=i)&&m!=j)&&m!=k)&&m!=l))for(n=0;n<8;n++)
if((n!=i)&&n!=j)&&n!=k)&&n!=l)&&n!=m))
for(x=0;x<8;x++)
if((x!=i)&&x!=j)&&x!=k)&&x!=l)&&x!=m)&&x!=n))
for(y=0;y<8;y++)
if((y!=i)&&y!=j)&&y!=k)&&y!=l)&&y!=m)&&y!=n)&&y!=x))
printf("%d",xx);
方法其實很簡單,多動腦多寫。
15樓:網友
方法1:比較笨的辦法是先排好。再在裡面找。看是原來的第幾個。 (**我就不寫了。)
方法2:有乙個很快的方法,就是用快速排序排,如果你深入的瞭解了快排,那麼這個就很簡單了。而且效率很高。
我給你寫**。
16樓:麥斯維爾
可以用遍歷的方法,結果應該有8!個。
c語言中如何定義陣列C語言中如何定義陣列
c語言中,同變數一樣 陣列也必須先定義後使用。一維陣列的定義形式 型別識別符號 陣列名 常量表示式 例如int a 10 其中a為地址常量。如變數的定義一樣,int a double a float a等 陣列的定義只是把後面的變數名改為陣列名而已。int a 10 就是定義了一個陣列名為a的陣列 ...
C語言中陣列元素下標的資料型別,在C語言中,引用陣列元素時,其陣列下標的資料型別允許是
c 整形常量,字元形常量或整形表示式 c的陣列可以理解為數學中的含有第0項的數列 含有 a 0 a 1 a n 1 共 n 個資料,訪問是要用整形的 x去訪問。這種題不要死記硬背 在c語言中,引用陣列元素時,其陣列下標的資料型別允許是 b比如int a 20 下表就可以是常量,i 8 j 9 a i...
c語言陣列賦值問題,c語言中如何給陣列定義並賦初值?
我不清楚你想問什麼,不過第二種寫法是對的。char chars 11 是定義了一個初始值為空總數為11的字元陣列。char s c language 定義一個總數為11的字元陣列,但是有初值。注意是11個不是10個,用這種方定義的字元陣列末尾會加一個 0。陣列的賦值通常是使用花括號來表示的,但是字元...