Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 线性搜索问题_C#_Algorithm_Linear Search - Fatal编程技术网

C# 线性搜索问题

C# 线性搜索问题,c#,algorithm,linear-search,C#,Algorithm,Linear Search,我的程序没有编译错误,但输出不正确。输入示例: 数组大小:5 输入数字:5 4 3 2 1 //排序:12345 搜索:1 输出:在索引4处找到编号1 输出应该是索引0处的数字1,因为这些数字已经排序。我怎么把它改成这个 int[] nums = new int[100]; int SizeNum; bool isNum = false; private void ExeButton_Click(object sender, EventArgs e) {

我的程序没有编译错误,但输出不正确。输入示例:

数组大小:5
输入数字:5 4 3 2 1
//排序:12345
搜索:1
输出:在索引4处找到编号1

输出应该是索引0处的数字1,因为这些数字已经排序。我怎么把它改成这个

    int[] nums = new int[100];
    int SizeNum;
    bool isNum = false;

    private void ExeButton_Click(object sender, EventArgs e)
    {
        int i, loc, key;
        Boolean found = false;
        string SizeString = SizeTextBox.Text;
        isNum = Int32.TryParse(SizeString, out SizeNum);
        string[] numsInString = EntNum.Text.Split(' ');   //split values in textbox
        for (int j = 0; j < numsInString.Length; j++)
        {
            nums[j] = int.Parse(numsInString[j]);
        }
        if (SizeNum == numsInString.Length)
        {
            Array.Sort(numsInString);
            key = int.Parse(SearchTextBox.Text);
            ResultText.AppendText("Sorted: ");
            for (i = 0; i < SizeNum; i++)
                ResultText.AppendText(" " + numsInString[i]);
                 ResultText.AppendText("\n\n");
            {
                for (loc = 0; loc < SizeNum; loc++)
                {
                    if (nums[loc] == key)
                    {
                        found = true;
                        break;
                    }
                }
                if (found == true)
                    ResultText.AppendText("Number " + key + " Found At Index [" + loc + "]\n\n");
                else
                    ResultText.AppendText("Number " + key + " Not Found!\n\n");
            }
        }
    }
int[]nums=newint[100];
int SizeNum;
bool-isNum=false;
私有void ExeButton_单击(对象发送者,事件参数e)
{
int i,loc,键;
布尔值=false;
string SizeString=SizeTextBox.Text;
isNum=Int32.TryParse(SizeString,out SizeNum);
字符串[]numInstalling=EntNum.Text.Split(“”);//在文本框中拆分值
对于(int j=0;j
您正在排序
numinstall
,但随后搜索
nums
nums
将在搜索之前填充,因此您将看到搜索未排序数字的结果

numinstalling
解析为
nums
后,您应该只使用后一个数组。确保那是你正在排序和搜索的

换句话说,一旦将当前排序调用替换为

Array.Sort(nums);
你的代码会很好的

已更新

你真的需要另一个修复。现在,您正在将
nums
初始化为大小为100的数组。默认情况下,每个元素将为0。因此,即使在前五个元素中输入数字,当对数组进行排序时,最终的结果是95个0,然后是1 2 3 4 5

您应该延迟初始化
nums
,直到您看到
numinstall
有多大:

string[] numsInString = EntNum.Text.Split(' ');   //split values in textbox
nums = new int[numsInString.Length];

for (int j = 0; j < numsInString.Length; j++)
{
    nums[j] = int.Parse(numsInString[j]);
}
string[]numinstring=EntNum.Text.Split(“”)//在文本框中拆分值
nums=newint[numinstring.Length];
对于(int j=0;j

现在,当您对
nums
进行排序时,您将只看到您输入的数字。

您正在对
nums进行排序,然后搜索
nums
nums
将在搜索之前填充,因此您将看到搜索未排序数字的结果

numinstalling
解析为
nums
后,您应该只使用后一个数组。确保那是你正在排序和搜索的

换句话说,一旦将当前排序调用替换为

Array.Sort(nums);
你的代码会很好的

已更新

你真的需要另一个修复。现在,您正在将
nums
初始化为大小为100的数组。默认情况下,每个元素将为0。因此,即使在前五个元素中输入数字,当对数组进行排序时,最终的结果是95个0,然后是1 2 3 4 5

您应该延迟初始化
nums
,直到您看到
numinstall
有多大:

string[] numsInString = EntNum.Text.Split(' ');   //split values in textbox
nums = new int[numsInString.Length];

for (int j = 0; j < numsInString.Length; j++)
{
    nums[j] = int.Parse(numsInString[j]);
}
string[]numinstring=EntNum.Text.Split(“”)//在文本框中拆分值
nums=newint[numinstring.Length];
对于(int j=0;j

现在,当您排序
nums
时,您将只看到您输入的数字。

您正在解析
numinstall
,然后您正在排序它。(我怀疑这类人也不会做你想做的事。)

我想你真的想对nums进行排序:

Array.Sort(nums);
话虽如此,还是有更简单的方法来实现最终结果,比如使用
IndexOf
来查找数组中某个值的索引

也不清楚为什么这里有牙套:

for (i = 0; i < SizeNum; i++)
    ResultText.AppendText(" " + numsInString[i]);
    ResultText.AppendText("\n\n");
{
    ...
}
(i=0;i ResultText.AppendText(“+numInstalling[i]); ResultText.AppendText(“\n\n”); { ... }
这使它看起来像是有一个带主体的环,但实际上相当于:

for (i = 0; i < SizeNum; i++)
{
    ResultText.AppendText(" " + numsInString[i]);
}
ResultText.AppendText("\n\n");
{
    ...
}
(i=0;i { ResultText.AppendText(“+numInstalling[i]); } ResultText.AppendText(“\n\n”); { ... }
。。。大括号在这里没有任何作用,只会损害可读性。

您正在解析
numinstang
然后对其进行排序。(我怀疑这类人也不会做你想做的事。)

我想你真的想对nums进行排序:

Array.Sort(nums);
话虽如此,还是有更简单的方法来实现最终结果,比如使用
IndexOf
来查找数组中某个值的索引

也不清楚为什么这里有牙套:

for (i = 0; i < SizeNum; i++)
    ResultText.AppendText(" " + numsInString[i]);
    ResultText.AppendText("\n\n");
{
    ...
}
(i=0;i ResultText.AppendText(“+numInstalling[i]); ResultText.AppendText(“\n\n”); { ... } 这使它看起来像是有一个带主体的环,但实际上相当于:

for (i = 0; i < SizeNum; i++)
{
    ResultText.AppendText(" " + numsInString[i]);
}
ResultText.AppendText("\n\n");
{
    ...
}
(i=0;i { ResultText.AppendText(“+numInstalling[i]); } ResultText.AppendText(“\n\n”); { ... }
。。。大括号在这里没有任何作用,只会损害可读性。

您正在排序
numinstang
数组,但仍在搜索
n