排列演算法總結

2021-09-27 02:15:13 字數 1072 閱讀 6638

永遠溫柔,永遠知進退。
從小到大或從大到小進行排序,採用雙重for迴圈巢狀得方式進行排序,可以利用boolean進行標識減少排序得次數來優化程式。

int arr = {};//定義乙個陣列

for (int i = 0; i < arr.length - 1; i++)

count++;

} if(flag)

}

顧名思義有選擇得進行排序,比如說有一組數字,遍歷找到最小與第乙個數字交換,再找到第二小的數與第二位交換,以此類推,直至結束。

int arr = {};//定義乙個陣列

for (int i = 0; i < arr.length - 1; i++)

} int temp = arr[index];

arr[index] = arr[i];

arr[i] = temp;

}

利用第二個數和第乙個數進行比較,若小則插到索引為0的位置上,第三個數和第二個數進行比較,若小則插到索引為1的位置上,若大則不動,第四個數和第三個數進行比較,若小則插到索引為2的位置上,若大則不動,以此類推直至結束。

int arr = {};//定義乙個陣列

for (int i = 1; i < arr.length; i++)

arr[insertindex + 1] = insertvalue;

}

對陣列長度進行二分法進行元素的排序,比如長度為10,第一次則10/2=5組,也就是說第乙個和第六個元素為一組,第二個和第七個為一組,以此類推兩個元素進行比較若第六個比第乙個小,則兩個元素進行互換。第二次為5/2=2組,13579為一組,246810為一組,元素交叉,兩組元素分別進行插入排序,第三次2/2=1組,進行插入排序,到此結束。

int arr = {};

for (int gap = arr.length / 2; gap > 0; gap /= 2)

} }}

以上均為閒暇時光隨便整理,若**說的不對還望指教,謝謝。

全排列演算法總結

本文同時發布在我的個人部落格 求 n 位的字串的全排列,先確定第 0 位,然後對後面 n 1 位進行全排列,在對 n 1 為進行全排列時,先確定第 1 位,然後對後面的 n 2 位進行全排列.由此得到遞迴函式和遞迴的結束條件。全排列也就是交換位置,到 n 2 位時,就是將 n 2 和 n 1 交換位...

演算法總結 排列組合

46 全排列 關鍵點 使用used記錄已使用的用數字 class solution def permute self,nums list int list list int self.res self.used false len nums self.generatearrange nums,0,r...

總結 三種全排列演算法

1 遞迴演算法 演算法書上有詳細的解釋,複製如下 設r 是要進行排列的n個元素,ri r 集x中元素的全排列記為perm x ri perm x 表示在全排列perm x 的每乙個排列前加上字首ri得到的排列.r的全排列可歸納定義如下 當n 1時,perm r r是集合r中唯一的元素.當n 1時,p...