java插入排序

来源:互联网 发布:ubuntu如何删除软件 编辑:程序博客网 时间:2024/05/16 12:13

简单的讲就是把一个数字放在一串已经排好顺序的数组中,放进去后还要使得数组排序完整。

那么,就是1找位置,2填数字。这就是我的思路。

下面是插入排序的类:

package algorithm;public class insertion_sort {    public double[] insertion_one(double num,double[] has_sort){//将num加入到has_sort数组中这里has_sort是已经排序的    int i;                                                   //找位置部分    for(i=0;i<has_sort.length;i++){    if(num<has_sort[i])break;    }    has_sort=this.input_one(has_sort, i, num);    return has_sort;     }    public double[] input_one(double[] p,int num_in,double item){// 将一个数组中的item元素    double[] key=new double[p.length+1];                      //加入到p数组中的第num_in位置    for(int i=0;i<p.length+1;i++){                             //填数字的方法    if(i<num_in){        key[i]=p[i];    }else if(i==num_in) {    key[i]=item;}else if(i>num_in){key[i]=p[i-1];}    }    return key;    }    public void display(double[] p){ //显示数组函数    for(int i=0;i<p.length;i++){    System.out.println(p[i]);    }    }}

通过下面的方法测试下上面:

package algorithm;public class text {public static void main(String[] args) {         double[] array1={1,2,3,4,5,6,7};     //有序数组一个         double[] array2;   //显示实验数组         insertion_sort text1=new insertion_sort();//text“行动”:做插入排序         array2=text1.insertion_one(3.3,array1);   //插入3.3的          array2=text1.insertion_one(3.6,array2);    //继续插入3.6的         text1.display(array2);         }}

对于一个数组排序时 插入排序是拿第二个和第一个比,大的站第二小的去第一,然后是依次第二个和第三个比大的去第三小的去第二

这样个样子所以我加了如下的函数只需要加入到之前的类中

public double[] insertion_self_com(double[] p){         //单一杂乱数组插入排序for(int j=0;j<p.length;j++){for(int i = 1;i<p.length;i++){if(p[i]<p[i-1]){double key;key=p[i-1];p[i-1]=p[i];p[i]=key;}}}return p;}

测试下

package algorithm;public class text {public static void main(String[] args) {         double[] array1={12,13,15,13,10,45,2,23};     //有序数组一个         double[] array2;   //显示实验数组         insertion_sort text1=new insertion_sort();//text“行动”:做插入排序         array2=text1.insertion_self_com(array1);         text1.display(array2);         }}

应该还算ok