Пример #1
0
        public void Find(object o)
        {
            Pair p=(Pair)o;
            int start1=p.start;
            int end2=p.end;
            int start2 = start1+(end2 - start1) / 2 + 1;
            int end1=start2-1;

            //ChangeShowRichTextBox2(start1 + "-" + end2 + "\n");
            resultText += start1 + "-" + end2 + "\n";
            int j = 0;
            if (!найдено)
            {
                if(end2-start1<=n+1)
                {
                    // Обычный поиск
                    for (j = start1; j <= end2 && !найдено; j++)
                    {
                        if (massArray[j] == число)
                        {
                            resultText += start1 + "-" + end2 + "; НА ПОЗИЦИИ = " + j + "\n";
                            //ChangeShowRichTextBox2(start1 + "-" + end2 + "; НА ПОЗИЦИИ = "+j+"\n");
                            position = j;
                            найдено = true;
                            break;
                        }
                    }
                }
                else
                {
                    Thread t1 = new Thread(new ParameterizedThreadStart(Find));
                    Pair p1=new Pair();
                    p1.start=start1;
                    p1.end=end1;
                    t1.Start(p1);

                    Thread t2 = new Thread(new ParameterizedThreadStart(Find));
                    Pair p2 = new Pair();
                    p2.start = start2;
                    p2.end = end2;
                    t2.Start(p2);
                }

                if(j!=0 && j!=end2+1)
                {
                    resultText += start1 + "-" + end2 + "; ПОТОК ВЫЛЕТЕЛ НА ПОЗИЦИИ = " + j + "\n";
                }
            }
        }
Пример #2
0
        // Поиск числа в массиве
        private void button3_Click(object sender, EventArgs e)
        {
            int start = 0;
            int end = massArray.Length-1;

            // Глубина поиска
            n = (int)Math.Log(massArray.Length,2);
            число = int.Parse(textBox9.Text);
            найдено = false;
            richTextBox2.Text = "";
            resultText = "";

            Pair p = new Pair();
            p.start = start;
            p.end = end;

            Thread t = new Thread(new ParameterizedThreadStart(Find));;
            t.Start(p);

            while (!найдено)
            {
            }

            // Вывод
            textBox10.Text = position.ToString();
            richTextBox2.Text = resultText;
        }