- 题目描述:长度为 N 的数组乱序存放着 0 到 N-1,只能进行 0 和其它数的交换,完成从大到小的排序。
\\ n: 要和 0 交换的数字
\\ len: 数组的长度
public class Solution {
public void swapWithZero(int[] array, int len, int n) {
Main.SwapWithZero(array, len, n);
}
public void sort(int[] array, int len) {
swapWithZero(array, len, array[0]);
swapWithZero(array, len, len-1);
for(int i=1; i<len-1; i++) {
swapWithZero(array, len, a[i]);
swapWithZero(array, len, i);
}
swapWithZero(array, len, len-1);
}
}
- 解题思路:将 0 依次放在数组中对应的位置上,然后让 0 和值为 0 所在数组当前位置下标处进行交换。需要注意的是,首先将 N-1 放在 array[0] 位置上,遍历交换完数组后,0 将会放置在最后的位置 array[len-1] 上,最后将 0 和 N-1 进行交换,完成了排序。