add insert sort
parent
eda1f371b5
commit
3a3240d4e5
|
@ -12,13 +12,19 @@ import java.util.Arrays;
|
|||
*/
|
||||
public class InsertSort {
|
||||
|
||||
/**
|
||||
* ①. 从第一个元素开始,该元素可以认为已经被排序
|
||||
* ②. 取出下一个元素,在已经排序的元素序列中从后向前扫描
|
||||
* ③. 如果该元素(已排序)大于新元素,将该元素移到下一位置
|
||||
* ④. 重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置
|
||||
* ⑤. 将新元素插入到该位置后
|
||||
* ⑥. 重复步骤②~⑤
|
||||
*/
|
||||
public static void sort(int[] arr) {
|
||||
for (int i = 1; i < arr.length; i++) {
|
||||
for (int j = i - 1; j >= 0; j--) {
|
||||
int tmp = arr[j];
|
||||
if (arr[j + 1] < arr[j]) {
|
||||
arr[j] = arr[j + 1];
|
||||
arr[j + 1] = tmp;
|
||||
swap(arr, j, j + 1);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
@ -28,6 +34,16 @@ public class InsertSort {
|
|||
System.out.println(Arrays.toString(arr));
|
||||
}
|
||||
|
||||
public static void swap(int[] arr, int i, int j) {
|
||||
// arr[i] = arr[i] + arr[j];
|
||||
// arr[j] = arr[i] - arr[j];
|
||||
// arr[i] = arr[i] - arr[j];
|
||||
|
||||
int tmp = arr[i];
|
||||
arr[i] = arr[j];
|
||||
arr[j] = tmp;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
sort(new int[]{4, 9, 1, 6, 8, 2});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue