插入排序算法的Java实现

 1 package jgf.hmw.paixu;
 2 
 3 public class Sort_Insert {
 4 
 5     /**
 6      * @author hanxin
 7      * 标题:插入排序算法
 8      */
 9     //待插入数组
10     public static int [] array={4,2,5,8,3,7,1,9,6};
11     //插入排序算法
12     public static int [] inSort(int [] darray)
13     {
14         if(darray[0]>darray[1])//处理前边两个数组元素
15         {
16             int temp=darray[0];
17             darray[0]=darray[1];
18             darray[1]=temp;
19         }
20         for(int i=2;i<darray.length;i++)//处理后边的数组元素
21         {
22             for(int j=0;j<i;j++)//内层循环与外层循环的关系要知道{如果i,j有关系的话}
23             {        
24                 int temp=darray[i];
25                 if(darray[j]<darray[i])//如果后边插入的元素比已排好序的某个大
26                 {
27                     if(darray[j+1]>darray[i])//又比其中的某个小
28                     {
29                         for(int k=i;k>j;k--)//这很关键,想了好久才想到的
30                         {
31                             darray[k]=darray[k-1];//则移动后边的元素,直到那个位置j+1
32                         }
33                         darray[j+1]=temp;//插入
34                     }
35                 }    
36                 else//如果后边插入的元素比所有的都小
37                 {
38                     for(int k=i;k>0;k--)
39                     {
40                         darray[k]=darray[k-1];//则全部元素后移
41                     }
42                     darray[0]=temp;//插入到第一个位置
43                 }            
44             }
45         }
46         return darray;
47     }    
48     /**
49      * @param args
50      */
51     public static void main(String[] args) {
52         // TODO Auto-generated method stub
53         int [] sort=inSort(array);
54         for(int i=0;i<sort.length;i++)
55         {
56             System.out.println(sort[i]);
57         }
58     }
59 }
View Code

用了一个小时左右写出的,虽然耗时有点长,还是奖励自己吧。

刚开始想用两个数组的,后来想了一下,只要有一个交换空间就可以了,没必要浪费就设了一个temp。

如果有错误或有可以优化的地方,请指点。^_^

 

 

小小程序员--一直很安静的我。

posted on 2013-08-24 09:25  一直很安静的我  阅读(206)  评论(0)    收藏  举报

导航