Цитата:
3-5000
3-4000
3-10
2-100
1-6000
1-200
В 3 и 4 столбце данные лишь для примера, они не используются, можно хранить координаты или что там нужно.
CODE:int a[6][4];
// какие-то данные
a[0][0] = 1; a[0][1] = 6000; a[0][2] = 100; a[0][3] = 111;
a[1][0] = 3; a[1][1] = 10; a[1][2] = 200; a[1][3] = 222;
a[2][0] = 3; a[2][1] = 5000; a[2][2] = 300; a[2][3] = 333;
a[3][0] = 1; a[3][1] = 200; a[3][2] = 400; a[3][3] = 444;
a[4][0] = 3; a[4][1] = 4000; a[4][2] = 500; a[4][3] = 555;
a[5][0] = 2; a[5][1] = 100; a[5][2] = 600; a[5][3] = 666;
int row = sizearray(a);
int col = sizearray(a[]);
int i, j;
string tmp;
kiborlog(0, "До сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}
// сортировка по первым двум столбцам
// передаём указатель на массив, количество строк и столбцов в массиве
sort_array(#a[0][0], row, col);
kiborlog(0, "После сортировки:", 0, 0, 400, 400);
for(i=0; i<row; i++)
{
tmp = "^t";
for(j=0; j<col; j++)tmp = tmp + format(a[i][j]) +"^t";
kiborlog(0, tmp, 0, 0, 400, 400);
}
kiborlog(1, "", 0, 0, 400, 400);
function sort_array(int #m, int row, int column)
{
int max, max2, imax;
for(int i=0; i<row; i++)
{
max=m[i][0]; max2=-1; imax=i;
for(int j=i+1; j<row; j++)
{
if(m[j][0] > max || (m[j][0] == max && m[j][1] > max2))
{
max=m[j][0]; max2=m[j][1]; imax = j;
}
}
for(int k=0; k<column; k++)
{
int tmp = m[i][k]; m[i][k]=m[imax][k]; m[imax][k]=tmp;
}
}
}