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

来源:互联网 发布:腾讯刷枪软件 编辑:程序博客网 时间:2024/06/16 23:30

初学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;
}
}

0 0
原创粉丝点击