陣列所有排列的演算法 基於盜夢空間

2021-08-31 10:11:50 字數 613 閱讀 6588

前些日子遇到乙個演算法面試題,需要求出乙個陣列的所有排列方式,個人所運用到的迭代遞迴演算法與電影的「夢中夢」神似,有感而發。

在每一次做夢之前,先預想好乙個狀態,在每乙個夢做完之後,就需要恢復到我們做這乙個夢之前的狀態,因為在我們意識中的狀態還是最初的狀態,就像在遞迴之前改變陣列的排列,遞迴完畢之後再恢復到這一次遞迴之前的狀態。而我們並不知道我們的夢境處於第幾層,於是我們需要乙個標識來提供我們現在所處的位置。

//乙個泛型陣列的空杯交換

public static void temp(t arr,int index1,int index2)

/*** 迭代遞迴

* @param 泛型

* @param arr 泛型陣列

* @param flag 識別符號,用以標識從第幾個元素開始迭代遞迴,元素從0開始

*/public static void sortall(t arr,int flag)else}}

//測試

public static void main(string args) ;

object arr = ;

sortall(arr,0);}}

《盜夢空間》與程式中的遞迴

夢裡不知身是客,一晌貪歡。李煜 浪淘沙 今生搭錯了車次,注定不能與你相依,一聲夢中夢,我的魂,追你到來世 某個台灣女詩人 看了 盜夢空間 inception英文名 直譯為 成立 的意思。主人公可以進入你的夢,在夢中改變你的潛意識。這樣的最大的危險是分不清哪個是夢境,哪個是現實。現實中我們經常碰到這樣...

陣列的全排列演算法

求給定陣列的全排列。如 輸入 1,2,3 輸出 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2 思路 這裡借用別人的解題思路,我就不重述了 1 首先看最後兩個數4,5。它們的全排列為4 5和5 4,即以4開頭的5的全排列和以5開頭的4的全排列。由於乙個數的全排列就是其本身,從...

基於陣列的排序演算法

在完成各個排序的 前,先完成乙個交換函式和列印函式。void show int arr,int len printf n 交換函式 static void swap int p,int s sort.h中的函式宣告 ifndef sort h define sort h void exchange ...