算法介绍
仅用于排序小列表,如果需要排序的列表几乎已经排序,则插入排序比冒泡排序更有效率。
算法实现
如果需要通过插入排序算法来排序一个列表,
那么:
- 需要将列表分为两个子列表:排序列表和未排序列表。
- 最初排序列表中有第一个元素,而未排序列表中包含所有剩余的元素。
- 循环为排序列表,将第一元素放到循环列表中的正确位置。
代码
public class InsertSort {
private static int[] arr = {70, 80, 30, 10, 20};
/**
* 排序
*
* @param arr 需要排序的数组
*/
private static void sort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) {
int j = i - 1;
int temp = arr[i]; //存放用于待比较的数据
// 内层循环用来插入排序,循环停止条件:j<0 || arr[j] <= temp
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = temp;
}
}
private static void printArray() {
for (int num : arr) {
System.out.print(num + "\t");
}
}
public static void main(String[] args) {
sort(arr);
printArray();
}
}