生成1到n的隨機排列 C 實現

2021-07-05 18:49:58 字數 576 閱讀 4005

主要思想:隨機生成乙個陣列a,將陣列 a 排序後,排序後的陣列中的資料在原來陣列中的位置所組成的乙個序列即為1  到 n 的乙個隨機排列

原始碼:

#include"iostream"

#include"ctime"

#include"cstdlib"

#define max 20000

using namespace std;

struct element;

int cmp(const void *a,const void *b); //公升序排列

void rand_of_n(int a,int n); //產生 1-n 的隨機排列並存到 a 中

int main()

void rand_of_n(int a,int n){

int i;

struct element ele[max];

srand((int)time(0)); // 初始化隨機數種子

for(i=0;i

生成1 n的排列

摘自 演算法競賽入門經典 按字典序生成1 n的全排列。偽 void print permutation 序列a,集合s if s為空 輸出序列a else 按從小到大的順序依次考慮s的每個元素v print permutation 在a的末尾新增v後得到的新序列,s void print permu...

生成1 n的全排列

一 不可重集 includeusing namespace std const int maxn 1000 5 void print n int n,int a,int cur a是儲存全排列的陣列,cur是插入的位置 if cur n for int i 0 i 二 可重集 可重集排列注意如果陣列...

演算法 生成1 n的排列

在暴力求解法中,我們常常要用上列舉一些簡單內容以便方便獲得解,若要輸出整數n的前n個整數的全排列,則按字典序輸出為 1,2,3 1,3,2 2,1,3 2,3,1 3,1,2 3,2,1 從中我們似乎發現了一些規律 先輸出以1開頭的排列,再輸出以2開頭的排列,然後是3 而在以1開頭的排列中,1的後一...