永遠溫柔,永遠知進退。
從小到大或從大到小進行排序,採用雙重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...