插入排序:
对于少量元素的排序,插入排序是一个有效的算法。插入排序是一种简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增 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 }
执行结果: