排序算法第二弹~~
理解并实践了冒泡排序后,现在来搞定插入排序这个磨人的小妖精~~~~
基本原理: 简单的说就是将待排序的元素直接插入到已排序的元素中去,直到所有元素都被处理
解决思路: 将数组分为上下两部分,其中上部分是已经完成排序的部分,下部分是待排序部分。以A[i]为例,A[0]~A[i-1]是已经完成排序的有序序列,A[i]~A[n]是待排序部分,插入排序的任务是将A[i]放到上部分有序序列中,直到待排序部分没有元素为止。
代码如下:
package zj.com.insert;
import java.util.Arrays;
import java.util.Scanner;
public class Insertsort {
int temp = 0;
int j = 0;
public void insSort(int[] a){
for(int i = 1;i<a.length;i++){
j = i;
/*
* 将A[i]插入到有序序列中
* while循环中的代码很关键,注意与其他排序的区别*/
while(j>0&&a[j]<a[j-1]){
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
j--;
}
}
}
public static void main(String[] args) {
Insertsort insertsort = new Insertsort();
int[] a = new int[10];
Scanner scanner = new Scanner(System.in);
for(int i = 0;i<10;i++){
a[i] = scanner.nextInt();
}
insertsort.insSort(a);
System.out.print(Arrays.toString(a));
}
}