Examples
[7, 1] => [1, 7]
[5, 8, 6, 3, 4] => [3, 8, 6, 5, 4]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] => [1, 8, 3, 6, 5, 4, 7, 2, 9, 0]
javascript版本
1.自己
function sortArray(array) {
// Return a sorted array.
let temp;
// 冒泡排序
for(let i = 0 ; i < array.length; i++){
if(array[i] & 1){
for(let j = i+1 ; j < array.length; j++){
if(array[i] > array[j] && array[j] & 1 ){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
return array;
}
2.他人
function sortArray(array) {
const odd = array.filter((x) => x % 2).sort((a,b) => a - b);
return array.map((x) => x % 2 ? odd.shift() : x);
}
java版本
1.自己
public class Kata {
public static int[] sortArray(int[] array) {
int temp;
for(int i = 0 ; i < array.length; i++){
if( (array[i] & 1) == 1){ // 奇数
for(int j = i+1 ; j < array.length; j++){
if(array[i] > array[j] && (array[j] & 1) ==1 ){
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
return array;
}
}
2.他人
import java.util.*;
public class Kata {
public static int[] sortArray(final int[] array) {
// Sort the odd numbers only
final int[] sortedOdd = Arrays.stream(array).filter(e -> e % 2 == 1).sorted().toArray();
// Then merge them back into original array
for (int j = 0, s = 0; j < array.length; j++) {
if (array[j] % 2 == 1) array[j] = sortedOdd[s++];
}
return array;
}
}
3.他人
import java.util.PrimitiveIterator.OfInt;
import java.util.stream.IntStream;
public class Kata {
public static int[] sortArray(int[] array) {
OfInt sortedOdds = IntStream
.of(array)
.filter(i -> i % 2 == 1)
.sorted()
.iterator();
return IntStream
.of(array)
.map(i -> i % 2 == 0 ? i : sortedOdds.nextInt())
.toArray();
}
}