1.基本概念:
一种简单的,稳定的排序方式,复杂度为O(n^2),适合元素少时使用。
2.初步理解:
首先,假设有一组排好序(由小到大)的数据,现今要插入一个数字,其步骤为将该数字 从后至前与之前的数据进行比较,最终插入小于等于该数字的后面。那么,在实际用中,我们先把第一个数看做是一组已经排好序的数据 ,将第二个数按之前的方式 插入排好序的数组中,接着又将第一和第二两个数看做排好序的数据,又将第三个数按之前的方插入………………
3.步骤:
插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
4.基本思想:
每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
5.代码:
public class InsertOrder {
//输出数据
public static void printArray(int print[]){
for(int k=0;k<print.length;k++){
if(k<print.length-1){
System.out.print(print[k]+",");
}else{
System.out.print(print[k]);
}
}
System.out.println("");
}
//进行排序
public static void InsertOrder(int array[]){
for(int i=1;i<array.length;i++){
int position=i;
int currrent=array[i];
for(int j=i-1;j>=0;j--){
if(currrent>=array[j]){
break;
}else{
array[j+1]=array[j];
position-=1;
}
}
array[position]=currrent;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int ceshi[]=new int[]{12,100,1000,895,634,35,24,56,85,45,96,35};
//初始顺序
InsertOrder.printArray(ceshi);
//插入排序实现
InsertOrder(ceshi);
//排序后顺序
InsertOrder.printArray(ceshi);
}
}
6.备注:
有问题的地方还请各位多多包含,不吝赐教。