中级农民
- 积分
- 155
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-4-17
- 最后登录
- 1970-1-1
|
写了下shuffle. 输入是[0,2,_,3] 输出是[0,_,2,3].
- public class SortWithBlank {
- public static void main(String[] args) {
- int[] arr = {-1, 3, 2, 1};
- sortUsingBlank(arr, 0);
- for (int i : arr) {
- System.out.print(i + " ");
- }
- }
- //0 1 2 -1
- public static void sortUsingBlank(int[] arr, int pos) {
- if (arr == null || arr.length == 0) {
- return;
- }
- for (int i = 0; i < arr.length; i++) {
- if (i == pos) {
- continue;
- }
- int val = arr[i];
- if (val >= 0 && val < arr.length && arr[val] != val) {
- pos = swap(arr, val, i, pos);
- }
- }
- }
- private static int swap(int[] arr, int j, int i, int pos) {
- if (j == pos) {
- arr[j] = arr[i];
- arr[i] = -1;
- return i;
- } else {
- arr[pos] = arr[i];
- arr[i] = arr[j];
- arr[j] = arr[pos];
- arr[pos] = -1;
- return pos;
- }
- }
- }
复制代码 |
|