C語言之random n 續

2021-06-01 04:45:35 字數 866 閱讀 1633

之前寫拉乙個random_n的演算法實現,雖然簡單易懂,但是演算法的效率相對來說不算很高,節省拉空間,只用到拉乙個陣列實現。

這個random_n的實現用到拉兩個陣列,子函式中的陣列在函式棧銷毀時釋放空間。最好和最壞執行時間都是o(n )。主要時利用拉空間換時間。

具體的**實現如下:

#include

#include

#define max_num 10

void random_n(int a,int n);

int main()

{int a[max_num],i=0,j=0;

while(j除錯和執行結果:

主要的思想:先產生0-n 之間的所有數,然後依次產生乙個隨機數,把產生的隨機數當做下標,訪問已經產生的有序陣列,並取出下表所對應的值付給我們傳進來的元陣列。然後把這個數用最後乙個資料覆蓋掉。然後讓產生隨機數的模減1,這樣下次訪問的有效範圍便是之前沒有訪問過的。這樣依次迴圈進行知道陣列填滿。

思考過程如下:

|      0    |    1        |         2    |    .。。。  |       。。。    |     n-1       |            n      |

假如產生的隨機數為2,則:

|      0    |    1        |         n    |    .。。。  |       。。。    |     n-1       |            n      |

|      0    |    1        |         2    |    .。。。  |       。。。    |     n-1       |            n      |

依次覆蓋。

C語言 C語言之continue

c語言迴圈 c 語言中的continue語句有點像break語句。但它不是跳出該迴圈語句,continue是跳過本次迴圈直接開始下一次迴圈的。在for迴圈裡,continue會跳過本次迴圈,但是自增語句仍然會執行,而在while和do while語句裡嘖是跳過迴圈重新執行判斷語句 課堂作業內容為 輸...

C語言之指標

指標型別的本質分析 1 指標的本質 指標的本質 一種復合的資料型別。下面我將以下面幾個作為例子進行展開分析 a int p b int p c int parvalue 3 d int pfun 分析 所謂的資料型別就是具有某種資料特徵的東東,比如資料型別char,它的資料特徵就是它所佔據的記憶體為...

C語言之陣列

c語言之陣列 一,一維陣列 1,一維陣列的定義 型別符 陣列名 常量表示式 注 1 常量表示式中可以包括常量和符號常量.int a 3 5 是合法的,int a n 是不合法的,c語言不允許對陣列的大小作動態定義 2 如果在被呼叫的函式 不包括主函式 中定義陣列,起長度可以是變數或非常量表示式,可稱...