插入排序 small 2 big
private void sortSmall2Big() {
int[] array = {5, 6, 4, 2, 1, 3};
for (int j = 1; j <array.length; j++) {
int key = array[j];
int i = j - 1;
while (i >= 0 && array[i] > key) {
array[i + 1] = array[i];
array[i] = key;
i = i - 1;
}
}
Log.d("debug", "array=" + Arrays.toString(array));
}
key = 6;
i =0;
array[0] = 5;
不满足条件,退出while循环,此时{5,6,4,2,1,3}
key = 4;
i=1;
array[1]=6;
满足条件6>4;
array[2] = array[1]=6;
array[1] = key = 4;
i=0;
array[0] = 5 > key;
array[1] = array[0] = 5;
array[0] = 4;
i = -1;
不满足条件,退出while循环,此时{4,5,6,2,1,3}
key = 2;
i = 2;
array[2] = 6 > 2;
array[3] = array[2] = 6;
array[2] = 2;
此时{4,5,2,6,1,3}
i = 1;
array[1] = 5 >2;
array[2] = array[1] = 5;
array[1] = 2;
此时{4,2,5,6,1,3}
i = 0;
array[0] = 4 > 2;
array[1] = array[0] = 4;
array[0] = 2;
此时{2,4,5,6,1,3}
i = -1;
不满足条件,退出while循环,此时{2,4,5,6,1,3}
……………………………………
由大到小排序的话,改动一处 while(i >= 0 && array[i] < key)