c語言,遞迴排序問題,求解
1樓:網友
#include
#define n 3
int a[n] = ;
輸出陣列內容。
void print()
printf("");
/交換陣列中兩個給定位置的數字。
void swap(int p1, int p2)//遞迴排序函式。
void shuffle(int p)
從當前位置開始,將當前位置上的數依次與後面每乙個位置上的數交換位置,/然後遞迴呼叫本函式,呼叫結束再將交換的數還原。
for(i = p; i < n; +i)}int main()
遞迴的部分初學者不太容易理解,可以仔細思考一下,最好在紙上推演一下這個過程,看看陣列內容的變化規律。
2樓:網友
#include
void swap(int &a,int &b)void perm(int list,int k,int m)printf("");
else}}
void main()
perm(a,0,3);
這些是遞迴演算法裡的問題,你可以去看看演算法書。
遞迴呼叫的執行順序問題
3樓:網友
遞迴的執行順序就像棧一樣,你可以把遞迴呼叫函式,每一層都放入棧,有返回值時,然後挨著從棧內取出之前的函式段執行,一直執行到棧內為空為止,這過程中所有執行的結果即是該遞迴呼叫的結果。
不過 我看你這個遞迴呼叫 貌似有點問題。
4樓:網友
什麼啊?能否說詳細一點。
寫乙個函式實現對輸入10個字元按由小到大順序排列.在主函式中呼叫該函式並輸出排序後的結果
5樓:鍊金跑男
public class quicksorti = low;
j = hight;
index = a[i]; // 用子表的第乙個記錄做基準while (i < j)
a[i] = index;// 將基準數值替換回 a[i]sort(a, low, i - 1); // 對低子表進行遞迴排序sort(a, i + 1, hight); // 對高子表進行遞迴排序。
public static void quicksort(int a)
public static void main(string args) ;
quicksort(a);
}//陣列裡面傳多少個數都可以都可以幫你把數排序。
求解c/c++乙個字串的遞迴全排列的問題
6樓:仙戈雅
swap (list[k], list[i]);// 從第乙個元素起,後面的元素依次與第乙個元素交換。
perm (list, k+1, m); // 遞迴呼叫,直至乙個全排列完成,即k等於m.
swap (list [k], list [i]);// 將第乙個swap所換過的元素進行還原,防止遺漏和重複。
如果你懂得河內塔(漢諾塔)遞迴的整個內部執行過程,那麼這個全排列的遞迴(包括組合數的遞迴)就很簡單了。
7樓:
舉個簡單的例子:123進行全排列,那麼包含以下幾部分1)1是第一位的時候,對剩下的2,3進行全排列;
2)2是第一位的時候(將2和1交換),對剩下的1,3進行全排列;
3)3是第一位的時候(將3和1交換),對剩下的1,2進行全排列;
可以看到,每次遞迴是後面的值和起始位置交換,但每次都要保證原始順序不變(不然不能保證和1進行交換)
所以第一次交換是每次將後面的值一次交換到起始位置,再對後面的進行全排列;
第二次的交換是要將前面的交換再交換回來,保證最初的原始排列不發生變化。
c語言:題目:利用遞迴函式呼叫方式,將所輸入的5個字元,以相反順序列印出來?下面是答案!
8樓:網友
函式每被呼叫一次,都會分配一段專門給被調函式使用的棧空間,被調函式的區域性變數就在這段棧空間裡分配空間,所以即便像遞迴呼叫這種主調函式和被調函式是同一函式的情況,棧裡面是分別有獨立的棧空間的,相應的區域性變數也有獨立的記憶體空間,所以,以這個例子來說,主調函式的區域性變數n和被調函式的區域性變數n是有不同的記憶體空間的,不會相互衝突,主調函式的n被賦值,不影響被調函式對n賦值。
j**a中遞迴排序的問題!
9樓:匿名使用者
我這個是遞迴的方式:
public class demo
else }
void swap(int array,int k)public void showarray(intarray) }public static void main(string args)
10樓:匿名使用者
這是乙個排列的例子,它所做的工作是將輸入的乙個字串中的所有元素進行排序並輸出,例如:你給出的引數是"abc" 則程式會輸出:
abcacb
bacbca
cabcba
)演算法的出口在於:lo也就是現在給出的排列元素只有乙個時。
)演算法的逼近過程:先確定排列的第一位元素,也就是迴圈中i所代表的元素,然後low開始減少排列元素,如此下去,直到low
public static void permute(string str)
public static void permute(char list, int low, int high) else }}
寫乙個程式,輸入乙個字串,統計數字 空格 字母和其它字元出現的次數。
給你個大致的思想,具體自己編吧,這樣才會有進步!main int i ,sz ,zm ,kg ,qt char s s gets s while s i if 字元a的asciizm else if 的asciisz else if s i 空格的ascii kg else qt printf 數字...
判斷字元是雙位元組還是單位元組,判斷一個字元是雙位元組還是單位元組
雙位元組字元就是佔兩個位元組的字元。在英語中,用128個單位元組字元便可以內表示所有,但是用來表容示其他語言,128個符號是不夠的。比如,在 gb 2312 編碼或 gbk 編碼中,一個漢字字元儲存需要2個位元組。在utf 8編碼中,一個英文字母字元儲存需要1個位元組,一個漢字字元儲存需要3到4個位...
間隔是什麼意思間隔一個字元什麼意思
指兩個類似的事物之間的空間或隔開的距離。古義 隔離,隔絕 今義 事物相互之間在時間或空間中的距離。出處 遂與外人間隔。晉 陶淵明 桃花源記 白話譯文 於是與外面的人隔絕。擴充套件資料近義詞1 阻隔 兩地之間不能相通或不易來往 山川 2 間隙 空隙 利用工作 學習。利用玉米地的 套種綠豆。反義詞連續 ...