2020 1 28遞迴與排序

2021-10-02 10:02:15 字數 704 閱讀 6353

遞迴把大問題逐步縮小,直到變成最小的同類問題的過程

1、用stl輸出全排列

#includeusing namespace std;

int main()

; sort(data,data+4);

doprintf(" ");

}while(next_permutation(data,data+4));//注意這個庫函式用法

return 0;

}

2、用遞迴求全排列

思路:比如,要寫乙個由1、2、3、4這四個數組成的全排列,可以直接暴力法,來四個for即可。

那有100、1000、10000個數呢?

也寫那麼多個迴圈嗎?

顯然,我們就要公升級。

因為每個for都是同類的,所以用遞迴。

//種種原因 盜了別人的,比我寫的更清楚

#include using namespace std;

void swap(int &a,int &b)

void perm(int list,int low,int high)

else

}}int main()

; perm(list,0,2);

return 0;

}

快速排序遞迴與非遞迴

快速排序思想 以公升序為例 在要排序的序列中選乙個基準,使它左邊的數都比它小,右邊的數都比它大。具體步驟 1 區間選乙個key,可以選區間右邊界的那個數 2 讓begin從區間左邊界開始往後找大於key的數,找到後停下來,再讓end從區間右邊界 1開始往前找小於key的數,找到後讓它和begin找的...

快速排序 遞迴與非遞迴

1.以中間值作為基準數 void quick sort int q,int l,int r quick sort q,l,j quick sort q,j 1,r 2.以第乙個 最後乙個數作為基準數 int part sort int q,int l,int r q l q i q i temp r...

快速排序 遞迴與非遞迴

快速排序演算法,簡稱快排,是最實用的排序演算法,沒有之一,各大語言標準庫的排序函式也基本都是基於快排實現的。快排基本思路 快速排序基本思想是 通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可...