Бинарная сортировка вставкой - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д