B
Bio
Помогите решить решенную задачку
Вообще мне надо решить вот это: "Сортировка разделением. Способ разделения : интервал между минимальным и максимальным значениями элементов массива разбить пополам и относительно этого значения разбить массив на две части (с использованием вспомогательных массивов)."
Но, чистя диск, случайно наткнулся на одну прогу. (Откуда взялась – не знаю). Интуитивно догадываюсь, что делает она то что надо. Но врубиться в смысл не могу. Короче, если кому нетрудно, объясните "на пальцах" что она делает. И если это не то что надо, подскажите, как сделать то.
Исходняк:
Конкретно интересует запись: B1[k+i1++] и ей подобные. Это что и как?
Надо под VS6 без дополнительных библиотек - начальный уровень так сказать
Вообще мне надо решить вот это: "Сортировка разделением. Способ разделения : интервал между минимальным и максимальным значениями элементов массива разбить пополам и относительно этого значения разбить массив на две части (с использованием вспомогательных массивов)."
Но, чистя диск, случайно наткнулся на одну прогу. (Откуда взялась – не знаю). Интуитивно догадываюсь, что делает она то что надо. Но врубиться в смысл не могу. Короче, если кому нетрудно, объясните "на пальцах" что она делает. И если это не то что надо, подскажите, как сделать то.
Исходняк:
Код:
#include <stdio.h>
void sort(int A[], int n)
{
int B1[100],B2[100];
int i,i1,i2,s,k;
for (s=1; s!=n; s*=2) // Размер группы кратен 2
{
for (i=0; i<n/2; i++) // Разделить пополам
{
B1[i]=A[i];
B2[i]=A[i+n/2];
}
i1=i2=0;
for (i=0,k=0; i<n; i++) // Слияние с переходом " скачком"
{
f (i1==s && i2==s) // при достижении границ обеих
k+=s,i1=0,i2=0; // групп
if (i1==s) A[i]=B2[k+i2++];
else // 4 условия слияния по окончании
if (i2==s) A[i]=B1[k+i1++];
else // групп и по сравнению
if (B1[k+i1 ] < B2[k+i2 ]) A[i]=B1[k+i1++];
else A[i]=B2[k+i2++];
}
}
}
void main()
{
int A[]={3,5,7,4,1,6,8,0};
sort(A,8);
for (int i=0; i<8; i++) printf("%d ",A[i]);
}
Конкретно интересует запись: B1[k+i1++] и ей подобные. Это что и как?
Надо под VS6 без дополнительных библиотек - начальный уровень так сказать