问题描述:长度为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);
}
}
};