Бинарная сортировка вставкой - C#

Узнай цену своей работы

Формулировка задачи:

Помогите реализовать бинарный поиск вставками.
Бинарная сортировка вставкой (binary insertion sort) используется для поиска позиции вставки элемента A[i] среди предварительно отсортированных элементов A[0] ≤…≤ A[i-1] бинарный поиск. реализуйте его программно.
p.s. код одногруппника на pascal,но что то у меня не получается на C# реализовать, с моим массивом нечего не происходит
var i,n,j:integer;
a:array of integer;
amas:string;
m,l,r,x : integer;
 
  per_fl : boolean;
begin
ListBox1.Items.Clear;
Randomize();
n:=StrToInt(n1.Text);
SetLength(A,n);
amas:='Исходный массив: ';
for i:=1 to n do
  begin
  A[i]:=Random(10);
amas:=amas+' '+IntToStr(A[i]);
  end;
ListBox1.Items.Add(amas);
 for i:=2 to n do
begin
x:=a[i];
L:=1; R:=i;
while L<R do
begin
m:=(L+R) div 2;
if a[m]<=x then L:=m+1
else R := m;
end;
for j:=i downto R+1 do a[j]:=a[j-1];
a[R]:=x;
end;
 amas:='Отсортированный массив: ';
for i:=1 to n do
  amas:=amas+' '+IntToStr(A[i]);
ListBox1.Items.Add(amas);
end;

Решение задачи: «Бинарная сортировка вставкой»

textual
Листинг программы
static void InsertBin()
        {
            int[] A = { 3, 8, 4, 3, 2, 7, 10, 5 };
            int i, j;
            int n = 8;
            int m, l, r, k;
            Console.WriteLine("Исходный массив:");
            for (i = 0; i < n; i++)
                Console.Write("{0} ", A[i]);
            for (i = 2; i < n; i++)
            {
                k=A[i];
                l =1;
                r = i;
                while(l<r) 
                {
                    m = (l + r) / 2;
                    if (k<A[m])
                    {
                        r = m - 1;   
                    }
                   // else r = m;
                       else if (k>A[m])
                       {
                           
                           l = m + 1;
                       }
                       else k =A[m]; 
 
                }
                for (j = i; j > r + 1; j--)
                {
                    A[j] = A[j - 1];
                    A[r] = k;
                }
 
            }
            Console.WriteLine(" ");
            Console.WriteLine(" ");
            Console.WriteLine("Отсортированый массив:");
            for (i = 0; i < n; i++)
                Console.Write("{0} ", A[i]);
            Console.Read();
 
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5