Помогите с сортировкой -
jakebat - 26.07.2017
(Пожалуйста, не закрывайте тему.) Я пишу сюда только с
СУПЕР необходимостью, поймите же

Привет.
В общем насчет массива.
Задачу я в предыдущей теме составил тупую.
Перейдём к более сложной.
Как мне из 10 игроков на сервере, отсортировать ID'ы в зависимости от отдалённости персонажа?
С помощью функции:
PHP код:
GetDistanceBetweenPlayers(j,playerid); //Возвращает кол-во метров от одного к другому игроку. Либо в противном случае -1.0
-------------
Пробовал множествами способов!
Получилось. Но...
ОЧЕНЬ ТУПО И ГЛУПО создавать к каждому игроку переменную. Тут должно быть проще.
--------------
Найти наибольшее значение не проблема.
Проблема в том, что цикл будет проверять и опять ставить это же наибольшее значение и опять выводить его.
Я пробовал ставить цикл из 10-ти итераций в теле основного цикла, например, создавал переменную, потом если число в переменной, в которую после сортировки был занесен ИД совпадало с номером итерации , я прибавлял к этой переменной +1, затем делал проверку, если же переменная не равна 0, мы пропускаем данную итерацию и переходим к следующей. Ни Фи Га. Чушь получается какая-то. Помогите.
----------------
Я не прошу вас писать код, дайте мне идею решения, подсказку маленькую хотя бы.
а вывод должен быть примерно таков:
ID 4 - 34.2341
ID 1 - 22.4245
ID 0 - 9.4288
ID 9 - 2.4521
Re: Помогите с сортировкой -
SoNikMells - 26.07.2017
Quote:
Originally Posted by jakebat
У меня есть массив, в нем хранится 10 игроков ( massiv[10] ).У всех игроков значения разные.
|
Ты просто не хотел...
PHP код:
new DATA[MAX_PLAYERS] = {423,568,6765,247}; // тут их значения 423,543,6765,243,...
new massiv[10] = {0,1,2,...}; // id игроков
for(new j, i = sizeof massiv; i--;) for(j = 0; j < i; j++)
{
if(DATA[massiv[j]] < DATA[massiv[j+1]])
{
massiv[j] = (massiv[j] + massiv[j+1]) - (massiv[j+1] = massiv[j]);
}
}
for(new i; i != sizeof massiv; i++) printf("playerid: %i, data: %i", massiv[i], DATA[massiv[i]]);
Вывод:
PHP код:
playerid: 2, data: 6765
playerid: 1, data: 568
playerid: 0, data: 423
playerid: 3, data: 247
playerid: 4, data: 0
playerid: 5, data: 0
playerid: 6, data: 0
playerid: 7, data: 0
playerid: 8, data: 0
playerid: 9, data: 0
В обратную сторону:
PHP код:
// поменяй
if(DATA[massiv[j]] < DATA[massiv[j+1]])
// на
if(DATA[massiv[j]] > DATA[massiv[j+1]])
Вывод:
PHP код:
playerid: 4, data: 0
playerid: 5, data: 0
playerid: 6, data: 0
playerid: 7, data: 0
playerid: 8, data: 0
playerid: 9, data: 0
playerid: 3, data: 243
playerid: 0, data: 423
playerid: 1, data: 543
playerid: 2, data: 6765
Re: Помогите с сортировкой -
jakebat - 26.07.2017
Благодарю.
Re: Помогите с сортировкой -
jakebat - 26.07.2017
PHP код:
for(new j, i = sizeof massiv; i--;) for(j = 0; j < i; j++)
Как оно работает?
Нет условия... Объясни как вообще работает сортировка.
massiv =
Это я так понял ид приравнивается ячейке массива...
Объясни))
P.S. благодаря тебе, сделал то, что хотел, но не очень понял, то, что выше спрашиваю, объясни по-подробнее. Не знаком с безусловными циклами.
Re: Помогите с сортировкой -
SoNikMells - 26.07.2017
Quote:
Originally Posted by jakebat
PHP код:
for(new j, i = sizeof massiv; i--;) for(j = 0; j < i; j++)
Как оно работает?
Нет условия... Объясни как вообще работает сортировка.
massiv =
Это я так понял ид приравнивается ячейке массива...
Объясни))
P.S. благодаря тебе, сделал то, что хотел, но не очень понял, то, что выше спрашиваю, объясни по-подробнее. Не знаком с безусловными циклами.
|
Где мой плюсик в репутации? Благодарит...
Я тебе дал код, который лично для тебя написал.
Пожалуйста, будь добр, разбери сам!
Исходя из твоих сообщений, ты хотел лишь подсказку, а подарили целый код.
Я не стану пояснять его, ты должен сам изучить, потому что всегда не будут за тебя решать.
А условие тут есть, без него не работало бы ничего, просто ты не видишь.
Научись читать код, понимать его.
>> Сортировка пузырьком <<.
Re: Помогите с сортировкой -
jakebat - 27.07.2017
Ладненько, не хочешь объяснять - не объясняй. Тему пожалуйста не закрывайте. Может кто-то объяснит.
Re: Помогите с сортировкой -
White_116 - 01.08.2017
Quote:
Originally Posted by jakebat
Ладненько, не хочешь объяснять - не объясняй. Тему пожалуйста не закрывайте. Может кто-то объяснит.
|
Почитай про методы реализации swap функции, замена чисел местами, их как минимум 3 три метода. Лень все описывыть, да и в интернете более по литературному все изложенно. А после прочитай про пузырьков сортировку.
Re: Помогите с сортировкой -
jakebat - 01.08.2017
Спасибо