插入排序
虽然它是一个简单的算法,但是发现越是简单的最是容易被忽略的,所以这里写出来,大家可以看看。
直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序的表中,从而得到一个新的、记录数增一的有序表。当前元素的前面元素均为有序,要插入时,从当前元素的左边开始往前找(从后往前找),比当前元素大的元素均往右移一个位置,最后把当前元素放在它应该呆的位置就行了。
接下来上代码:
import java.util.Scanner;
/**
* 直接插入排序
*/
public class InsertSort {
@SuppressWarnings("resource")
public static void main(String[] args) {
System.out.print("请随便输入10个整数:");
Scanner sc = new Scanner(System.in);
int[] nums = new int[10];
for (int i = 0; i < nums.length; i++) {
nums[i] = sc.nextInt();
}
insertSort(nums);
display(nums);
}
/**
* 直接插入排序算法
*/
public static void insertSort(int[] nums) {
int lengths = nums.length;
for (int i = 1; i < lengths; i++) {
int temp = nums[i]; // 从无序序列中取出第一个元素 (注意无序序列是从第二个元素开始的)
int j;
for (j = i - 1; j >= 0 && nums[j] > temp; j--) {
nums[j + 1] = nums[j];
}
nums[j + 1] = temp; // 将临时元素插入到腾出的位置中
}
}
/**
* 遍历打印
*/
public static void display(int[] nums) {
if (nums.length > 0 && nums != null) {
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println("");
}
}
}
结果展示: