我正在尝试用Java实现二进制搜索,但是我的代码有一些问题。如果我要查找的元素存在于数组中,它就会起作用。如果没有,程序就不会打印错误消息。我的意思是-
当我运行我的代码时-这是输出-
Please enter array size
2
Please enter element 0
3
Please enter element 1
4
Sorted array elements[3, 4]
Please enter the element you want to find in the array
3
Match 3 found at index 0
但是,如果我查找数组中不存在的元素,程
我在LeetCode中尝试了解决3和问题的二进制解决方案:
给定一个数组nums of n整数,在nums中有元素a、b、c这样的a + b + c = 0吗?在数组中找到所有唯一的三重奏,这会给出零的和。注意:解决方案集不能包含重复的三重奏。示例:给定数组num= -1,0,1,2,-1,-4,解决方案集为:[ -1,0-1,-1,-1,2 ]
我的计划:分治threeSum
一次迭代
还有一个two_Sum问题。
将two_Sum问题分解为问题
一圈
二进制搜索
复杂性是:O(n^2\log{n})。
class Solution:
"""
So
我对编程很陌生,我正在学习C。我试图用递归来解决一个问题。我已经找到了很多关于这方面的信息,我可以在我的程序中使用它,但我仍然想尝试一些不同的东西。我的问题如下:
bool search(int value, int values[], int n)
// int value is value to search,
// int values[] is the array in which value is to be found (or not)
// int n is size of array
// some code here and then:
if (midd
我已经为Ackermann函数编写了一个非递归的解决方案,它似乎工作得很完美,比普通的递归解决方案工作得更快。那么,如果它可以迭代求解,为什么它是一个非原始递归函数呢?有人能告诉我,如果我误解了什么是原始递归函数,或者我应该和谁谈谈才能得到答案呢?
以下是Java代码:
import java.util.Scanner;
import java.util.ArrayList;
public class ackermann {
public static void main(String[] args){
Scanner in = new Scanner(System.i
在最近为我的编程2类分配的任务中,我们通过使用13,040个字符串填充一个java ArrayList来测试搜索的效率。顺序搜索明显比二进制搜索慢,因为复杂性不同,代码实际需要循环遍历代码的次数也不多。
然而,迭代二进制搜索和递归二进制搜索具有相同的比较量。例如:
sequentialSearch(): 'some_word' found in ArrayList at index 13,020 - comparisons: 13,021
比较是计算机实际检查用户的"some_word“是否等于值ArrayList的次数。
iterativeBinarySearch()
我正在为第n个斐波纳契数制作程序。我用递归和回忆录制作了下面的程序。主要问题是,n的值可以上升到10000,这意味着10000的斐波那契数将超过2000位数。
通过谷歌搜索,我发现我可以使用数组,并将解决方案的每一个数字存储在数组的一个元素中,但我仍然无法找到如何用我的程序实现这种方法。
#include<iostream>
using namespace std;
long long int memo[101000];
long long int n;
long long int fib(long long int n)
{
if(n==1 || n==2)
此代码生成一个随机数,按升序对其进行排序,并执行二进制搜索以查找目标值。我的问题是如何修改这段代码以找到给定目标的最大索引。例如,数组有{ 1,2,3,5,5,5},目标是5,所以输出应该是6,而不是3。谢谢。
import java.util.*;
public class Sort
{
public static void main(String args[])
{
Scanner in = new Scanner(System.in);
System.out.print("Ho
import java.io.*;
import java.lang.Integer;
class sort {
public void find(int val, int a[], int n) {
int mid = n / 2;
System.out.println("the mid value is:" + a[mid]);
if (a[mid] == val) {
System.out.println("found " + a[mid] + " in positi
编写一个方法countBinary,该方法接受整数n作为参数,并按升序打印所有具有n个数字的二进制数字,并将每个值打印在单独的行上。所有n位数字都应该显示在所有数字上,必要时包括前导零。你可以假设n是非负的。如果n为0,则应生成输出的空行。不要在解决方案中使用循环;递归地实现它。
我的问题是,我不知道如何打印0和1,因为n是我能拥有的唯一参数。我也不能使用for循环并将递归调用放在循环中,所以我不得不坚持。到目前为止,这就是我所拥有的:
public static void countBinary(int n){
if (n < 0) {
throw new Illega
我使用MATLAB中的以下函数,按log(2^n)步骤(所有长度为n的二进制数),按升序计算长度为n的所有二进制向量。
A = compV([0;1],n);
function [O] = compV(O,n)
j = length(O);
if n > 1
O1 = [zeros(j,1) O];
O2 = [ones(j,1) O];
O = [O1;O2];
O = compV(O,n-1);
收到的错误:
Exception in thread "main" java.lang.StackOverflowError
at AVL.insert(AVL.java:45)
我不太熟悉给出的错误,但我知道只有当用于构建AVL树的数组大小变化很大时才会发生这种情况,并且在插入过程中移动到树的右侧时会发生这种情况。我不知道为什么会发生这种情况(换句话说,我不知道StackOverflowError是什么,也不知道它为什么会发生)。
AVL级:
//AVL.java
import java.util.*;
import java.io.*;
public class
我只使用n实现了它,因为low无论如何都是0,但是说到“正确的算法方式”,高和低vars是否有必要出现呢?我的实施:
public class ArrayBinarySearch {
static int binarySearch(int[] a, int n, int key) {
int mid = n / 2;
if (key >= a[mid]) {
for (int i = mid; i < n; i++) {
if (a[i] == key)
这是我所在学院的数据结构和算法课程的一个小测验中的一个问题。
在最坏的情况下,搜索排序链接列表中的元素所需的比较数是多少?
可供选择的办法如下:
a.委员会(n/2)
b.赛伊(原木)
c. n2
d. ceil ((log n) + 1)
e. n
根据答案键,正确的答案是n。
但是我这样想,在一个排序的链接列表中,搜索不需要遍历所有的元素。它可以从当前跳到第二个节点(比如curr->next->next,并保留一个类似于prev = curr->next的前一个指针),并查看该节点的键是否小于要搜索的键,
如果要搜索的密钥大于当前节点的密钥,则重复此操作。
下面是一个leetcode问题:给定一个由不同整数组成的数组num,返回所有可能的排列。你可以返回所有可能的排列。你可以按任何顺序返回答案。
下面是我为上述问题编写的代码。它给出了正确的输出:
import java.util.*;
public class Main {
public static void printPerm(int[] arr, int[] perm, int n){
if(arr.length == 0){
System.out.println(Arrays.toString(perm));
r
我有一个未排序的对象列表。每个对象都包含一个唯一的搜索键。下面是一些示例代码:
import java.util.*;
class Dog {
private final String nameKey;
private final String owner;
private final int age;
private final int weight;
Dog(String n, String o, int a, int w) {
nameKey = n;
owner = o;
age = a;