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
}
}
}
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
}
}
}
相关文章推荐
- 冒泡排序、选择排序、插入排序、快速排序算法的时间性能分析(java实现)
- 利用java实现数据结构中常用的插入排序和快速排序算法
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- java实现插入排序
- 插入排序————Java实现
- 用JAVA实现的插入排序
- java实现插入排序
- java 实现 冒泡排序、选择排序、插入排序。
- 插入排序---java实现
- Java分别实现冒泡排序、插入排序、快速排序、选择排序、交换排序
- java实现快速排序、插入排序、选择排序、冒泡排序算法
- 冒泡排序、选择排序、插入排序(Java实现)
- 简单的插入排序 java实现
- 《算法导论的Java实现》 1_1.1 插入排序
- Java实现二分插入排序
- JAVA排序算法实现代码-插入排序
- java实现插入排序
- 利用java实现数据结构中常用的插入排序和快速排序算法
- java实现插入排序