数据结构与算法-插入排序(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;
}
}
排序算法是非常常用的基础算法,在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;
}
}
相关文章推荐
- Hust oj 1548 基础数据结构——循环链表
- 数据结构基本概念
- 数据结构实验之栈八:栈的基本操作
- 数据结构实验之栈七:出栈序列判定
- 数据结构实验之栈六:下一较大值(二)
- 数据结构实验之栈五:下一较大值(一)
- FreeRTOS内核详解----LIST
- 数据结构实验之栈三:后缀式求值
- 数据结构实验之栈二:一般算术表达式转换成后缀式
- B+树实现
- 几种排序算法总结
- 时间复杂度
- 图的有关操作
- 数据结构实验之栈一:进制转换
- Java 数据结构之数组的操作一:初级
- 数据结构笔记整理第5章:树和二叉树
- 【数据结构】常见的7种比较排序算法2
- 【数据结构】构造二叉树的三种方法
- 常用数据结构汇总
- 深入理解散列表(哈希表)