两个有任意长度的数据从小到大排列顺序表合并成一个其中元素也是从小到大排列的顺序表Java程序

两个有任意长度的数据从小到大排列顺序表合并成一个其中元素也是从小到大排列的顺序表Java程序

方法1: 可以把合并后的ArrayList集合看成数组看待,然后进行排序操作. (思路数组的排序)

方法2:  可以给List的sort方法提供一个比较器Comparator,然后对合并后的List进行排序

具体代码如下

import java.util.ArrayList;
import java.util.Comparator;

public class Demo {
public static void main(String[] args) {
ArrayList<Integer> list1 = new ArrayList<>();//集合1
list1.add(6);
list1.add(80);
ArrayList<Integer> list2 = new ArrayList<>();//集合2
list2.add(3);
list1.add(70);
ArrayList<Integer> list3 = new ArrayList<>();//集合3
list3.addAll(list1);//集合合并
list3.addAll(list2);//集合合并
System.out.println("排序前:"+list3);//输出集合3
//给集合3排序
list3.sort(new Comparator<Integer>() {// 给list的sort方法提供1个Comparator比较器作为参数. 这个比较器就是排序的标准
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;//o2-o1则是从大到小排列
}
});
System.out.println("排序后:"+list3);//输出排序后集合3
}
}

测试输出

排序前:[6, 80, 70, 3]
排序后:[3, 6, 70, 80]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-10
#definenew(structlb*)malloc(sizeof(structlb))structlb{intdata;structlb*next;};structlb*hb(structlb*wla,structlb*wlb){structlb*wlc,*p,*q,*w;p=wla;q=wlb;w=wlc=new;while(p!=0&&q!=0){if(p->datadata){w->next=new;w=w->next;w->data=p->data;p=p->next;}elseif(p->data>q->data){w->next=new;w=w->next;w->data=q->data;q=q->next;}}while(p!=0){w->next=new;w=w->next;w->data=p->data;p=p->next;}while(q!=0){w->next=new;w=w->next;w->data=q->data;q=q->next;}w->next=0;wlc=wlc->next;return(wlc);}prn(structlb*whead){structlb*p;p=whead;while(p!=0){printf("%d",p->data);p=p->next;}}main(){structlb*la,*lb,*lc;la=crea_lb();lb=crea_lb();lc=hb(la,lb);prn(lc);}以上就是你要的代码.prn函数是显示出新的链表.
第2个回答  2017-09-10
说一下思想. 两个顺序表AB,分别设置2个指针i,j指向顺序表的第一个元素,然后互相比较i,j的值,如果i小于j的话,把i的值插入到顺序表C里,并且i的指针加1,然后继续比较,一直比较到i或j有一个指针为空为止.. 然后判断i和j的值.如果都等于空,那么就结束

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网