理论教育 插入排序算法,数组排序,Java语言

插入排序算法,数组排序,Java语言

时间:2023-11-20 理论教育 版权反馈
【摘要】:插入排序算法是把要排序的数组分成前后两个部分:前面部分为排序好的元素,后面部分为数组的其他所有元素。第2遍,把已排序的第0、1个元素作为前一部分,第2个元素开始作为后一部分。将第2个元素取出暂存于变量temp,前一部分中所有比temp大的元素后移一位,直到元素比temp小为止,然后将temp放到移动后空出的位置。如此循环,直至排序完成。图9-4 插入排序算法使用插入法对一无序数组进行排序。

插入排序算法,数组排序,Java语言

插入排序算法是把要排序的数组分成前后两个部分:前面部分为排序好的元素,后面部分为数组的其他所有元素。从后部分第1个元素开始,逐个将元素插入前一部分合适的位置中去。插入时,前部分中比该元素大的元素后移。

第1遍,第0个元素作为前一部分,第1~n-1个元素为后一部分。取出第1个元素暂存于变量temp,并将temp与第0个元素比较,如果元素0较大,就将第0个元素后移到位置1,将temp放到移动后空出的位置0;否则,放到位置1。这时第0~1个元素完成排序。

第2遍,把已排序的第0、1个元素作为前一部分,第2个元素开始作为后一部分。将第2个元素取出暂存于变量temp,前一部分中所有比temp大的元素后移一位,直到元素比temp小为止,然后将temp放到移动后空出的位置。

第i遍,这时第0~i-1个元素作为前一部分已排序,第i个元素开始到最后作为后一部分。将第i个元素取出暂存于变量temp,同样将所有比temp大的元素后移一位,将temp放到移动后空出的位置。如此循环,直至排序完成。如图9-4所示。

978-7-111-34450-6-Chapter09-42.jpg

图9-4 插入排序算法(www.daowen.com)

【例9-21】使用插入法对一无序数组进行排序。

程序思路:将n个元素的数组分成0~i-1和i~n-1两个部分,其中前面的0~i部分已经排序。取出第i个元素存放于temp,然后将前面第0~i-1部分的元素进行移位,腾出与取出的第i个元素的值相适合的位置,将取出的temp放入。程序使用两层循环,外循环控制后半部分未排序的内容,循环计数i从1到n-1;内循环控制第i个元素之前的已排序部分的比较过程,内循环计数j从i-1开始减1计数,将第j个元素a[j]与temp比较,当a[j]>temp时a[j]后移一位,直到a[j]<temp时停止内循环,在j+1的位置插入temp。

978-7-111-34450-6-Chapter09-43.jpg

程序运行结果:(略,结果同例9-19)

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈