/**
* 直接插入
* 时间复杂度O(n^2)
* 空间复杂度O(1)
*/
@Test
public void zjcrTest(){
//原数组,直接排序原数组
int[] data = new int[]{4,105,91,2,38,6,7,3,11,9};
//初始化
int temp;
//在原数组中一个一个的排序
/**
* 1、取出第二个元素,与前面所有的元素,也就是第一个进行比较,找出合适的位置插入进去
* 2、取出第三个元素,与前面所有的元素反着进行比较,因为前面的已经排好,所以没有找到相应的位置就会把元素向后移动,直到找到这个位置,留出空,插入进去
* 3、遍历整个数组,把所有的全部进行排序,得到结果
*/
for (int i = 1; i < data.length; i++) {
//创建一个即将插入数组的数
temp=data[i];
int j;
//元素向后移动,寻找temp能够插入的位置
//data[j]>temp表示当找到这个位置的时候结束循环,也就是结束data中的元素的后移,为temp留出位置
for (j = i-1;j>=0 && data[j]>temp ;j--){
data[j+1]=data[j];
}
//插入temp
data[j+1]=temp;
}
//输出数组
System.out.println(Arrays.toString(data));
}