問題描述:長度爲n的數組亂序存放着0至n-1. 現在只能進行0與其他數的交換,完成數組排序
思路:由於亂序數組各元素亮亮不同,且已知數組內容即爲0-(n-1),所以只要考慮將0-(n-1)這n個數依次填入數組array即可。一個簡單的思路是,由於數組最終內容是array[i]=i,考慮將0與數組第i個位置互換,然後將0與i互換,則i填入位置array[i].
代碼:
/**
* 交換數組裏n和0的位置
* array: 存儲[0-n)的數組
* len: 數組長度
* n: 數組裏要和0交換的數
*/
extern void swap_with_zero(int* array, int len, int n);
class Solution {
public:
/**
* 調用方法swap_with_zero來對array進行排序
*/
void sort(int* array, int len) {
for(int i = len - 1; i > 0 ;i--){
swap_with_zero(array,len,array[i]);
swap_with_zero(array,len,i);
}
}
};