十大排序算法之插入排序

丶灬走出姿态 提交于 2019-12-13 08:10:25

简介

插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中;第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的有序数组中…第N-1次,数组前N-1个元素组成有序的数组,将数组的第N个元素插入由N-1个元素构成的有序数组中,则完成了整个插入排序。

理解

有五个无序数据为例:
3,1,5,4,2

  • 第一次排序,1比3小,则1和3换位置,变为了1,3,5,4,2

  • 第二次排序,5比3大,不需要调整,仍未1,3,5,4,2

  • 第三次排序,4比5小,则4和5 换位置,此时4比3大,则不再继续调整,此时变为了1,3,4,5,2

  • 第四次排序,2比5小,2和5换位置,2又比4小,2继续和4换位置,2仍然比3小,继续和3换位置,最后2比1大,不再调整。最终,变成了1,2,3,4,5.

数据变成了有序。

实例

  1. Java 代码
public class Main
{
	public static void main(String[] args) {
	    int[] sorts = {3,2,1,4,6,5,8,7,10,9};
	    
		System.out.println("排序前:");
		
		print(sorts);
		
		insertSort(sorts);
		
		System.out.println("\n排序后:");
		print(sorts);
	}
	
	public static void insertSort(int[] arrs) {
	    for (int i = 0;i < arrs.length;i++) {
	        int j;
	        int temp = arrs[i];
	        
	        for(j = i - 1;j >= 0 && arrs[j] > temp;j--) {
	            arrs[j+1] = arrs[j];
	        }
	        
	        arrs[j+1] = temp;
	        
	    } 
	} 
	
	public static void print(int[] arrs) {
	    for(int i = 0;i<arrs.length;i++) {
	        System.out.print(arrs[i] + " ");
	    }
	}
}
  1. 输出结果
    在这里插入图片描述
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!