插入排序算法的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 }
用了一个小时左右写出的,虽然耗时有点长,还是奖励自己吧。
刚开始想用两个数组的,后来想了一下,只要有一个交换空间就可以了,没必要浪费就设了一个temp。
如果有错误或有可以优化的地方,请指点。^_^
小小程序员--一直很安静的我。
浙公网安备 33010602011771号