日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 數據結構基礎(3) --Permutation & 插入排序

數據結構基礎(3) --Permutation & 插入排序

來源:程序員人生   發布時間:2015-01-04 09:02:52 閱讀次數:3454次

Permutation(排列組合)

排列問題:

設R = {r1, r2, ... , rn}是要進行排列的n個元素, Ri = R-{ri}; 集合X中元素的全排列記為Permutation(X), (ri)Permutation(X)表示在全排列Permutation(X)的每個排列前加上前綴ri得到的排列.

R的全排列可歸納定義以下:

當n=1時,Permutation(R)={r},r是集合R中唯1的元素;

當n>1時,Permutation(R)由(r1)Permutation(R1),(r2)Permutation(R2), ..., (rn)Permutation(Rn)構成。

順次遞歸定義,則可設計產生Permutation(X)的遞歸算法以下:

template <typename Type> void permutation(Type *array, int front, int last) { //已遞歸到了最后1個元素 if (front == last) { //打印輸出 for (int i = 0; i < front; ++i) { cout << array[i] << ' '; } cout << array[front] << endl; return ; } else { for (int i = front; i <= last; ++i) { // 不斷的從下標為[front ~ last]的元素當選擇1個元素 //作為當前序列的開頭元素 std::swap(array[front], array[i]); permutation(array, front+1, last); std::swap(array[front], array[i]); } } }

算法說明:

算法Permutation(array, k, m)遞歸地產生所有前綴是array[0:k⑴],且后綴是array[k:m]的全排列的所有排列.函數調用(list, 0, n⑴)則產生list[0:n⑴]的全排列.

 

算法演示:

char str[] = “abc”;的遞歸調用進程如圖:


小結:

雖然我們自己實現了Permutation, 但C++ STL中也實現了std::next_permutation算法, 在1般利用中, 我比較推薦使用STL中已實現好的next_permutation, 畢竟STL的代碼質量還是非常高的, 而且速度1點也不遜色于我們的實現;

 

插入排序

插入排序是低級排序中速度最快的1種(冒泡/選擇/插入排序效力均為O(N^2)),但是跟快速排序(NlogN),歸并排序(NlogN)還是有1定的差距的⊙

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久精品人人爽 | 国产伦精品一区二区三区照片 | 成人黄色网| 在线欧美一区 | 天堂在线| 亚洲第十页 | 精品久久久久久亚洲综合网 | 日本aⅴ免费视频一区二区三区 | www欧美 | 亚洲最大成人免费视频 | 亚洲美女视频一区 | 久久看视频 | 国产天堂在线 | 中文字幕av免费 | 精品久久久久久久久久久久久久 | 青青青爽久久午夜综合久久午夜 | 在线一二三区 | 久久99国产精一区二区三区 | 国产一区二三区 | 日本xxxxwwww| 国产老女人精品毛片久久 | 黄色一级大片在线观看 | 日韩精品 | 久久免费福利视频 | 免费在线成人av | 国产一区二区三区在线观看视频 | 综合久久久久久久 | 91视频在线观看视频 | 麻豆免费看 | 视频在线日韩 | 日本一二三区免费 | 精品成人一区二区 | 亚洲成人久久久久 | 国产精选第一页 | 在线a毛片免费视频观看 | 青青草亚洲 | 国产欧美精品一区二区 | 国产精品久久一区二区三区, | 久久久久久久亚洲精品 | 久久99这里只有精品 | 91精品国产综合久久久久久丝袜 |