简单的讲就是把一个数字放在一串已经排好顺序的数组中,放进去后还要使得数组排序完整。
那么,就是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

6万+

被折叠的 条评论
为什么被折叠?



