Бинарная сортировка вставкой - C#
Формулировка задачи:
Помогите реализовать бинарный поиск вставками.
p.s. код одногруппника на pascal,но что то у меня не получается на C# реализовать, с моим массивом нечего не происходит
Бинарная сортировка вставкой (binary insertion sort) используется для поиска позиции вставки элемента A[i] среди предварительно отсортированных элементов A[0] ≤…≤ A[i-1] бинарный поиск. реализуйте его программно.
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();
}