插入排序是将数组里面的第一个数当作有序的,往后的每一个数都和有序数组里面的每一个数作比较,找到合适的位置插入,结果仍然是有序的。
比如:int a[] ={38,69,45,97,76,13,27}
1.将38即a[0]当作有序的数组
2.a[1]69和它前面的数比较,a[1]>a[0],不做交换,结果为38,69有序数组
3.a[2]45和它前一位的数比较,a[2]<a[1],就把a[2]的值保存在临时变量中,把a[1]移到a[2]的位置上。利用临时变量中保存的原a[2]的值再和它前两位的数a[0]38比较,45大于4.38,就将45安插在38后面,结果是38,45,69
5.a[3]值97和前面的数比较,大于前一位的数,则不用改变,结果为38,45,69,97
6.a[4]值76和前一位数比较,小于a[3],将76保存在临时变量中,将a[3]的值后移至a[4],临时变量保存的值和前第二位数比较,76>69,就将76安置在所比较之数的后面,结果为38,45,69,97
7.以此类推。总的来说,插入排序就是当前位置的值和前面的有序数比较,如果小于前面的数,就将前一位的数往后移,然后自己再和前两位的数比较,如果仍然小于,继续将大的那个数往后移,继续和前三位的数比较,后移,比较,后移...直到所比的那个数已经是a[0],就将该数放在a[0]位置,原数仍然后移,或者找到比它大的数,就将该数放在大数后面。
代码如下:
网友评论