您的位置:首页 > 理论基础 > 数据结构算法

数据结构与算法-插入排序(java实现)

2016-05-22 22:51 302 查看
初学java,将一些自己写的java小程序贴出来与大家分享。一方面,帮助一些需要的人;另一方面,也同时希望得到一些同行的review,提升自己。

排序算法是非常常用的基础算法,在java中 java.util.Arrays包中就有排序算法的实现(代码中的注释部分)。

插入排序的原理:

将一个元素插入到一个有序序列中,将元素从后到前逐个比较,直到遇到比自己小的元素为止(从小到大排序)。

如: A C D E F B 前四个元素构成一个有序序列,将B插入到有序序列中,从而使得整个序列有序。那么过程是这样的:

首先将B取出 temp = B;

将temp与F比较 那么F>temp 所以 将F赋值给F的后面一个元素,则序列为 A C D F F。

再次将temp与E比较,那么 同样 E>temp 则 同样操作 将E赋值给后面的一个元素,则序列为ACDEEF

....

将temp与C比较 那么C>temp 则 同样操作 序列为ACCDEF

将temp与A比较 这个时候A<temp 则停止 将temp赋值给A后面的一个元素 序列为ABCDEF

将上面的过程理解了之后 只是将无序序列分为多个B元素 插入就好了,记得处理边缘情况,不要让数组越界。

import java.util.*;

public class dataStr {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

int [] arr={2,3,4,1,7,10};

//Arrays.sort(arr);

for(int i=0;i<arr.length;i++)

System.out.print(arr[i]+" ");

arr=insertSort(arr);

arrPrint(arr);

return ;

}

public static int[] insertSort(int [] resArr){

int len = resArr.length;

int j=0;

if((0==len)||(1==len))

{

return resArr;

}

for(int i=1;i<len;i++)

{

int temp=resArr[i];

for(j=i;j>0;j--)

{

if(resArr[j-1]>temp)

{

resArr[j]=resArr[j-1];

}

else

break;

}

resArr[j]=temp;

}

return resArr;

}

public static void arrPrint(int []arr)

{

int len=arr.length;

int i=0;

while(i<len)

{

System.out.print(arr[i++]+" ");

}

System.out.println();

return;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: