- 插入排序是将要排序的数组,分成两部分。一部分为有序,一部分为无序(待排序的数组)。
默认有序中有一个元素(因为只有一个元素,随便怎么放都是有序的),则无序中的元素有-1个。 - 先从有序的第一个 元素与 无序最后一个比较 若无序的第一个比有序的最后一个大则直接插入该入后面,否则进行寻找
若无序的第一个比有序的最后一个小则则往有序在前一个寻找或把整个有序寻找完(数组的索引为-1则表示寻找完毕) - 若要进行排序的数组是 int[] array=new int[]{101,34 ,119, 1}; 有序101,无序34 119 1
第一个元素的插入过程
int[] array=new int[]{101,34 ,119, 1};
int temp=array[1];
int index=1-1;
while(index>=0&& temp<array[index]){
array[index+1]=array[index]
index--;
}
array[index+1]=temp;
第二个元素的插入过程
int[] array=new int[]{101,34 ,119, 1};
int temp=array[2];
int index=2-1;
while(index>=0&& temp<array[index]){
array[index+1]=array[index]
index--;
}
array[index+1]=temp;
一个循环
for(int i=1;i<array.length;i++){
int[] array=new int[]{101,34 ,119, 1};
int temp=array[i];
int index=i-1;
while(index>=0&& temp<array[index]){
array[index+1]=array[index]
index--;
}
array[index+1]=temp;
}
- 在寻找合适的位置是temp<array[index]使用这个条件进行判断,即若待插入数 比当的数组下标的索引小,则该位置不是我们要寻找的数,则对索引的请一个数进行赋值,array【i+1】=array【i】,因为待插入的数在array【i+1】前面,(相当于将array【i】上的元素往后一位),最后index–; 找下一个数。
- 直到temp>=array[index] ,则表示找到了,索引待插入数 应该插入 index索引的后一一个位置 (从小到大)array【index+1】=temp