Java算法——直接插入排序
直接插入排序
前言
直接插入是一种稳定的插入排序,效率较高,而且时间复杂度也低,因为只是在一个数组内部进行内排,但是只适用于在有一些以前就排好的顺序的数组内部,如果在很长又很杂乱的数组内部进行排序的话,会让效率降低。
直接插入排序描述
首先定义一段长度为n的数组,从最左边开始:
第一趟的排序,只对前2个元素进行排序,
第二趟的排序,只对前3个元素进行排序,
第三趟的排序,只对前4个元素进行排序,
……
共计要进行n-1趟的排序。
代码图解
代码
package Algorithm;
import java.util.ArrayList;
import java.util.Scanner;
/**
* 直接插入排序:依次遍历排序,直到全部读取结束
*/
public class charu_Sort {
public static void main(String[] args) {
int n = new Scanner(System.in).nextInt();
int []arr = new int[n];
System.out.println("给数组依次赋值吧");
for(int i=0;i<n;i++) {
arr[i] = new Scanner(System.in).nextInt();
}
for (int front=1;front<arr.length;front++){
int p =arr[front];
int behind;
for (behind=front-1;behind>=0;behind--){
if(p<arr[behind]){
arr[behind+1]=arr[behind];
}else
break;
}
arr[behind+1]=p;
}
for(int u=0;u<arr.length;u++){
System.out.println(arr[u]);
}
}
}