双向排序比较

package clean;

import java.util.ArrayList;
import java.util.List;

public class Test_ {

public static void main(String[] args) {

//8,10,12
//8,10,12,13,15,18
//8,10
//8,12,13,18
List<Integer> idList1 = new ArrayList<Integer>();
idList1.add(8);
// idList1.add(10);
idList1.add(12);
idList1.add(13);
idList1.add(18);

//8,10,12,13,15,18
//8,10,12
//8,12,13,18
//8,10
List<Integer> idList2 = new ArrayList<Integer>();
idList2.add(8);
idList2.add(10);
// idList2.add(12);
// idList2.add(13);
// idList2.add(15);
// idList2.add(18);

compare(idList1, idList2);
}

public static void compare(List<Integer> idList1,List<Integer> idList2){
int matchCount = 0;
int notmatchCount_list1 = 0;
int notmatchCount_list2 = 0;

long id_list1 = 0;
long id_list2 = 0;
int j = 0;
for(int i = 0; i < idList1.size();i++){
id_list1 = idList1.get(i);

if(j == idList2.size()){
notmatchCount_list1++;
continue;
}

for(; j < idList2.size();j++){
id_list2 = idList2.get(j);
if(id_list1 == id_list2){
matchCount++;

j++;
if(i == idList1.size() - 1){
for(; j < idList2.size();j++){
notmatchCount_list2++;
}
}
break;
}else if(id_list1 < id_list2){
notmatchCount_list1++;
if(i == idList1.size() - 1){
notmatchCount_list2++;
j++;
for(; j < idList2.size();j++){
notmatchCount_list2++;
}
}

break;
}else {
if(j == idList2.size()-1){
notmatchCount_list1++;
}

notmatchCount_list2++;
continue;
}
}
}

System.out.println((matchCount+notmatchCount_list1) == idList1.size());
System.out.println((matchCount+notmatchCount_list2) == idList2.size());

matchCount = 0;
notmatchCount_list1 = 0;
notmatchCount_list2 = 0;
}
}

时间: 2024-08-02 04:19:57

双向排序比较的相关文章

算法之各种排序

算法之各种排序 本节内容 系统内置排序 冒泡排序 冒泡排序改进 双向排序 插入排序 希尔排序 归并排序 快速排序 1.系统内置排序 在python中使用内置方法对列表进行排序可以使用两种方法: 一种是列表提供的sort方法,该方法的特性是在原址进行排序,没有生成新的列表. 还有一种是python提供的内置方法sorted(),该方法接受一个序列,并返回一个排序好的序列,这种方式没有改变原序列的排序. 这里测试,使用的是list提供的sort内置方法.也就是原址排序. 在上面所列举的排序方式中,l

双向冒泡排序算法--java

以整数升序排序为例来简单说明一下双向冒泡排序的过程:首先从前往后把最大数移到最后,然后反过来从后往前把最小的一个数移动到数组最前面,这一过程就是第一轮,然后重复这一过程,最终就会把整个数组从小到大排列好.双向冒泡排序要稍微优于传统的冒泡排序,因为双向排序时数组的两头都排序好了,我们只需要处理数组的中间部分即可,而单向即传统的冒泡排序只有尾部的元素是排好序的,这时每轮处理都需要从头一直处理到已经排好序元素的前面一个元素.虽然它在效率上有了点改进,但它也不能大幅度提高其排序的效率,这是由冒泡排序的基

双向冒泡

以整数升序排序为例来简单说明一下双向冒泡排序的过程:首先从前往后把最大数移到最后,然后反过来从后往前把最小的一个数移动到数组最前面,这一过程就是第一轮,然后重复这一过程,最终就会把整个数组从小到大排列好.双向冒泡排序要稍微优于传统的冒泡排序,因为双向排序时数组的两头都排序好了,我们只需要处理数组的中间部分即可,而单向即传统的冒泡排序只有尾部的元素是排好序的,这时每轮处理都需要从头一直处理到已经排好序元素的前面一个元素.虽然它在效率上有了点改进,但它也不能大幅度提高其排序的效率,这是由冒泡排序的基

1.把二元查找树转变成排序的双向链表

转载请注明出处:http://www.cnblogs.com/wuzetiandaren/p/4256355.html  声明:现大部分文章为寻找问题时在网上相互转载,此博是为自己做个记录记录,方便自己也方便有类似问题的朋友,本文的思想也许有所借鉴,但源码均为本人实现,如有侵权,请发邮件表明文章和原出处地址,我一定在文章中注明.谢谢. 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向. 题目分析: 1.二叉树的节点有左右孩子指针,而双向

比较快速排序,冒泡排序,双向冒泡排序的执行快慢

快速排序 原理是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置.递归快速排序,将其他n-1个元素也调整到排序后的正确位置.最后每个元素都是在排序后的正 确位置,排序完成.所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归. 冒泡排序算法 原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,

Java中的七大排序(上)

一般排序通常认为是升序.稳定性:两个相等的数据若在排序前后的相对位置不发生改变,则称该算法是具备稳定性的算法.一:插入排序原理: 将数组分为有序区间和无序区间,每次用无需区间的 第一个数与有序区间进行比较.时间复杂度:O(n*n),空间复杂度:O(1)稳定性:稳定 代码如下: public static void insertSort0(int[] array) { for (int i = 1; i < array.length; i++) { // 有序区间 [0, i) // 无序区间 [

ASP.NET程序开发范例宝典

在整理资料时发现一些非常有用的资料源码尤其是初学者,大部分是平时用到的知识点,可以参考其实现方法,分享给大家学习,但请不要用于商业用途. 如果对你有用请多多推荐给其他人分享. 点击对应章节标题下载本章节下所有源代码. 目录: 第2章 HTML开发与实践 15 2.1 框架的使用 16 实例009 使用FrameSet框架布局聊天室 16 实例010 使用IFrame框架布局企业管理系统 17 2.2 滚屏的实现 18 实例011 滚动显示博客公告 18 实例012 滚屏效果并实现超级链接 20

Asp.net中GridView使用详解(引)

GridView无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单DropDownList结合GridView和CheckBox结合鼠标移到GridView某一行时改变该行的背景色方法一鼠标移到GridView某一行时改变该行的背景色方法二GridView实现删除时弹出确认对话框GridView实现自动编号GridView实现自定义时间货币等字符串格式GridView实现用“...”代替超长字符串GridView一般换行与强制换行GridV

Asp.net中GridView使用详解(引)【转】

Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中,编辑,取消,删除 GridView正反双向排序 GridView和下拉菜单DropDownList结合 GridView和CheckBox结合 鼠标移到GridView某一行时改变该行的背景色方法一 鼠标移到GridView某一行时改变该行的背景色方法二 GridView实现删除时弹出确认对话框 GridView实现自动编号 GridView实现自定义时间货币等字符串格式 GridView实现用