JAva筆記試験問題-0交換ソート
1295 ワード
package com.zjp.offer.study;
import java.util.Arrays;
/**
* 0 :
* n 0 n-1. 0 ,
*/
public class SortWithZero {
public static void main(String[] args) {
int[] arr = {8, 5, 3, 0, 6, 1, 2, 4, 7};
sort(arr, arr.length);
System.out.println(Arrays.toString(arr));
}
/**
* : 。 0 i , swapWithZero(arr, len, arr[i]). 0 i ;
* 0 i . i i
* @param arr
* @param len
*/
private static void sort(int[] arr, int len) {
for (int i = len - 1; i > 0; i--) {
if (arr[i] == i) {
continue;
}
// i 0 , arr[i]=0
swapWithZero(arr, len, arr[i]);
// i 0
swapWithZero(arr, len, i);
}
}
private static void swapWithZero(int[] arr, int len, int n) {
int zIndex = -1;
int nIndex = -1;
// 0 n
for (int i = 0; i < len; i++) {
if (arr[i] == 0) {
zIndex = i;
}
if (arr[i] == n) {
nIndex = i;
}
}
//
int tmp = arr[zIndex];
arr[zIndex] = arr[nIndex];
arr[nIndex] = tmp;
}
}