package com.taylor.charu;
import java.util.Arrays;
/**
*
* @author lenovo
* 直接插入排序
* 最好情况是待排序列是升序的,这样比较次数一共是(n-1)
* 最坏情况是待排序列是降序的,这样的话,比较次数是n(n-1)/2
* 平均时间复杂度是:平均比较次数+平均移动次数
* 这里直接插入的平均时间复杂度是:n*n/2
*
*/
public class InsertionSort {
public static void main(String[] args) {
//用一个数组接收待排序的数据
int[] temp = {20,56,18,95,12,9,64,51};
System.out.print("待排序的数组是:");
System.out.print(Arrays.toString(temp));
fun(temp);
System.out.print("\n"+"插入排序后的数组是:");
System.out.println(Arrays.toString(temp));
}
//插入的实现,确定元素找位置
public static void fun(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int j;
if(arr[i]<arr[i-1]) {
int temp = arr[i];
for(j=i-1;j>=0&&arr[j]>temp;j--) {
arr[j+1]=arr[j];
}
arr[j+1]=temp;
}
}
}
}