关于数组的插入排序,我们需要先对for循环有一个更加透彻的认识,我们需要很清楚的知道for循环结束的时候,i的取值是多少。如下面图例:
如图中,在第一个循环结束的时候,循环经过了5次,第五次结束的时候,i的值也经过了5次 i++ ;变成了5 ,不再满足i < 5 的条件,结束循环,第二个循环也是如此。
下面进入正题,关于插入排序,顾名思义,就是我们把数组分为两部分,将后免得部分的第一个数字逐一和前面的部分的每一个数字比较,然后在对的位置插入。
插入排序举例:{8 , 2 , 3 , 7 , 1}的排序过程如下所示:
第 1 步,假设第一个元素是已排序的 {8|2,3,7,1}
第 2 步,用 2 和"|“之前的所有元素比较,并插入 {8|2,3,7,1}
取出 2(temp=2)
temp 和 8 比,比 8 小,将 2 的位置赋值为大数(ary[1]=8) {8|8,3,7,1}
因为已到边界,直接赋值(ary[0]=2) {2,8|3,7,1}
2 和 8 排序完成
第 3 步,用 3 和”|“之前的所有元素比较,并插入 {2,8|3,7,1}
取出 3(temp=3)
temp 和 8 比,比 8 小,3 的位置赋值给大数(ary[2]=8) {2,8|8,7,1}
temp 和 2 比,比 2 大,插入 2 后面 (ary[1]=3) {2,3,8|7,1}
3、2、8 排序完成
第 4 步,用 7 和”|“之前的所以元素比较,并插入 {2,3,8|7,1}
取出 7(temp=7)
temp 和 8 比,比 8 小,7 的位置赋值给大数(ary[3]=8) {2,3,8|8,1}
temp 和 3 比,比 3 大,插入 3 后面(ary[2]=7) {2,3,7,8|1}
7、2、3、8 排序完成
第 5 步,用 1 和”|"之前的所以元素比较,并插入 {2,3,7,8|1}
取出 1(temp=1)
temp 和 8 比,比 8 小,1 的位置赋值给大数 8 {2,3,7,8|8}
temp 和 7 比,比 7 小,8 的位置赋值给大数 7 {2,3,7,7|8}
temp 和 3 比,比 3 小,7 的位置赋值给大数 3 {2,3,3,7|8}
temp 和 2 比,比 2 小,3 的位置赋值给大数 2 {2,2,3,7|8}
到边界,赋值(ary[0]=1) {1,2,3,7,8|}
1、2、3、7、8 排序完成 。
可以用图表示为:
在这其中:
• temp 代表取出待插入的元素
• i 代表后组待插入元素的位置
• j 代表前组每个元素的位置
• i 的取值范围是: i=1 ~ <ary.length i++
• j 的取值范围是: j= i-1 ~ >=0, j–