直接插入排序:
直接插入排序是一个稳定的排序方法,时间复杂度为O(n^2)。
基本思想:从第二个数开始排序比较,如果比前面的数小,则与前面的数交换位置。再对第三个数进行排序比较,先和第二个数进行比较,如果比第二个数小,则与之交换位置,再和第一个数进行比较,如果比第一个数还小,则交换位置……类似排序所有的数。排序的数最终会处在最终位置。
下面实现的是从小到大排序(输入任意个整数):
package InsertSort;
import java.util.Scanner;
public class InsertSort {
public static void InsertSort(int number[]) {
int n = number.length;
int temp = 0;
int j = 0;
for (int i = 0; i < n; i++) {
temp = number[i];
for (j = i; j > 0 && temp < number[j - 1]; j--) {
number[j] = number[j - 1];
}//如果temp比前面的小,则交换位置;如果前面还有整数,则把temp再与前面的比较,交换位置……
number[j] = temp;//最终把temp(即需要排序的数)放到应放的位置
}
for(int i=0;i<n;i++){
System.out.print(number[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
System.out.println("请输入需排序序列:");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String arr[] = str.split(" ");
int num[] = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
num[i] = Integer.parseInt(arr[i]);
}
InsertSort(num);
}
}