您的位置:首页 > 编程语言 > Java开发

java实现插入排序

2017-07-21 23:16 387 查看
package ogri1;

import java.util.Arrays;

public class InsertSort {

public static void main(String[] args) {
int arr[]={4,3,1,4,5,6,7,8,2,9};
sort(arr);
System.out.println(Arrays.toString(arr));

}
/**
* 插入排序 从小到大排序

* T(n)= n^2
* @param arr
*/
public static void sort(int[] arr){
int key;
for(int i=1;i<arr.length;i++){   // n
/**
* 保存第i位置的数据,以便找到合适位置时可以插入
*/
key=arr[i];  // n-1
int j=i-1;   //n-1
/**
* 依次与i前面的数比较大小,当比i前面的小时,先把前面的向前移动一位,再与前面的前面比。
*/
while(j>=0 && arr[j]>key){  // 2+3+4+...+n  (n-1)(2+n)/2 =  n(n+1)/2-1
arr[j+1]=arr[j]; // 1+2+3+...+n-1  n(n-1)/2
j--;  // 1+2+3+...+n-1  n(n-1)/2
}
/**
* 前面比较玩的j+1就是key的插入位置
*/
arr[j+1]=key;  //n-1
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  插入算法