插入排序:

对于少量元素的排序,插入排序是一个有效的算法。插入排序是一种简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 1 的有序表

。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动。

插入排序代码

 1 package com.liuyunfei.test;
 2 
 3 import java.util.Arrays;
 4 /**
 5  * int a[]={9,7,5,3,1,8,6,88,24,2};
 6  * 插入排序是从a[1]开始,如果a[0]>a[1],那么就要把这两个数调换位置,从{9,7,5,3,1,8,6,88,24,2}变为{7,9,5,3,1,8,6,88,24,2}
 7  * 
 8  * 把光标从往后移1位从a[2]开始,如果a[1]>a[2]那么就要把这两个数调换位置,从{7,9,5,3,1,8,6,88,24,2}变为{7,5,9,3,1,8,6,88,24,2}
 9  * 这里又发现a[0]>a[1],那么在调换位置从{7,5,9,3,1,8,6,88,24,2}变为{5,7,9,3,1,8,6,88,24,2},以此类推
10  * 
11  * 插入排序的核心是发现前面一个数比后面一个数大,就调换位置即a[j]=a[j-1];
12  * @author liuyunfei
13  *
14  */
15 public class InsertSort {
16     public void sort(int a[]){
17         for(int i=1;i<a.length;i++){
18             int temp=a[i];
19             int j=i;
20             if(a[i-1]>a[i]){
21                 while(j>0&&a[j-1]>temp){
22                     a[j]=a[j-1];
23                     j--;
24                 }
25                 a[j]=temp;
26             }
27             System.out.println("第"+i+"轮排序之后的结果是:"+Arrays.toString(a));
28         }
29     }
30     public static void main(String[] args) {
31         // TODO Auto-generated method stub
32         int a[]={9,7,5,3,1,8,6,88,24,2};
33         System.out.println("原始数组为:"+Arrays.toString(a));
34         new InsertSort().sort(a);
35         System.out.println("最终数组为:"+Arrays.toString(a));
36     }
37 
38 }

执行结果: