插入排序java_排序算法java实现(五):插入排序

直接插入排序的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。

假设我们要对43,21,87,15,20五个数进行排序。从小到大排序,越大的越靠后。

首先我们把第1个数43做为有序表,剩下的21,87,15,20是无序表。先把21取出来,因为43大于21,交换43和21的位置。此时有序表为21,43。无序表为87,15,20。

然后开始第二趟,取出无序表中的87,因为21和43都小于87,顺序保持不变。此时有序表为21,43,87。无序表为15,20。

接着开始第三趟,取出无序表中的15,15在有序表中最小,需要把15插入到有序表的最前面,此时有序表为15,21,43,87。无序表为20。

最后一趟,取出无序表中的20,20应该插入到有序表15和21之间,所以最终的顺序为15,20,21,43,87。

以最后一趟为例,在程序中如何实现呢:在进行到最后一趟时,有序表为15,21,43,87。无序表为20。先倒序查找小于20的位置,87大于20,继续找,43大于20,继续找,21大于20,继续找,15小于20,那么应该把20,插入到15之后。怎么插入呢,先倒序移位,移位前为15,21,43,87,20。把87移到20的位置,43移到87的位置,21移到43位置。这时的顺序为15,21,21,43,87。最后把无序表中的20放到第一个21的位置即可。最终的顺序就是15,20,21,43,87。

7b93c2f82f1d3df75eb6ed2dc4984729.png

插入排序

接下来,我们看下如何实现。

完整java代码如下,该示例会接收5个数字,并将这5个数字用插入排序法进行排序输出:

public class Test5 {public static void main(String[] args) { int arr[] = new int[5]; Scanner input = new Scanner(System.in); for(int i=0;i<5;i++) { int num = Integer.parseInt(input.nextLine()); arr[i] = num; } input.close();  int i=0,j=0,k=0; for(i=1;i<5;i++) { for(j=i-1;j>=0;j--) { if(arr[j]j;k--) { arr[k+1]=arr[k]; } arr[k+1]=temp; } }  for(i=0;i<5;i++) { System.out.println(arr[i]); }}}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值