二分查找法正确写法和判断链表循环

二分查找法正确写法:

public static int binarysearch(int[] a,int start,int end,int k)
{
	if(k>a[end])
		return -1;
	if(kk)
			end = mid-1;
		else
			start=mid+1;
	}
	return -1;
}
注意事项:

如果所搜索的k不在所给数组范围内,怎么办。

如果start和end的和溢出最大值怎么办。

要考虑[start,end]这种情况。就要start<=end才行。


判断链表循环:

// 判断链表中是否有环
public static boolean IsExitLoop(LinkList head)
{
	LinkList pslow = head;
	LinkList pfast = head;
	while(pfast != NULL && pfast->next != NULL)
	{
		pslow = pslow->next;        // 每次前进一步
		pfast = pfast->next->next;  // 每次前进二步
		if(pslow == pfast)          // 两个指针相遇,说明存在环
			return true;
	}
	return false;    // 没有环
}

如果链有环求环长度:

遍历链表,然后再数组中查询有没有相同的节点如果没有,则将该节点加入到数组中,如果有则链表环长度,等于相同节点中间节点的个数。



你可能感兴趣的:(数据结构和算法,java语言)