有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。
插入算法基本思想:把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外,而第二部分就只包含这一个元素。在第一部分排序后,再把这个最后元素插入到此刻已是有序的第一部分里的位置
算法实例(java):
package com.mjt.arithmetic;
public class InsertSort {
/**
* @param args
*/
public static void insertSort(int a[],int l) {
int temp = 0;
int j;
for(int i = 1; i < l; i++) {
if(a[i] < a[i-1]) {
temp = a[i];
a[i] = a[i-1];
for (j = i-2;j>=0 && temp < a[j];j--) a[j+1] = a[j];
a[j+1] = temp;
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = {23,12,19,27,10,20,33,2,11,1};
System.out.println("排序前:");
for(int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
insertSort(a,a.length);
System.out.println("\n排序后:");
for(int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
}