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