Помогите с сортировкой
#1

(Пожалуйста, не закрывайте тему.) Я пишу сюда только с СУПЕР необходимостью, поймите же
Привет.
В общем насчет массива.
Задачу я в предыдущей теме составил тупую.
Перейдём к более сложной.
Как мне из 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
Reply
#2

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 jsizeof massivi--;) for(0ij++)
{
    if(
DATA[massiv[j]] < DATA[massiv[j+1]])
    {
        
massiv[j] = (massiv[j] + massiv[j+1]) - (massiv[j+1] = massiv[j]);
    }
}
for(new 
i!= sizeof massivi++) printf("playerid: %i, data: %i"massiv[i], DATA[massiv[i]]); 
Вывод:
PHP код:
playerid2data6765
playerid
1data568
playerid
0data423
playerid
3data247
playerid
4data0
playerid
5data0
playerid
6data0
playerid
7data0
playerid
8data0
playerid
9data
В обратную сторону:
PHP код:
// поменяй
if(DATA[massiv[j]] < DATA[massiv[j+1]]) 
// на
if(DATA[massiv[j]] > DATA[massiv[j+1]]) 
Вывод:
PHP код:
playerid4data0
playerid
5data0
playerid
6data0
playerid
7data0
playerid
8data0
playerid
9data0
playerid
3data243
playerid
0data423
playerid
1data543
playerid
2data6765 
Reply
#3

Благодарю.
Reply
#4

PHP код:
for(new jsizeof massivi--;) for(0ij++) 
Как оно работает?
Нет условия... Объясни как вообще работает сортировка.
massiv =
Это я так понял ид приравнивается ячейке массива...
Объясни))
P.S. благодаря тебе, сделал то, что хотел, но не очень понял, то, что выше спрашиваю, объясни по-подробнее. Не знаком с безусловными циклами.
Reply
#5

Quote:
Originally Posted by jakebat
Посмотреть сообщение
PHP код:
for(new jsizeof massivi--;) for(0ij++) 
Как оно работает?
Нет условия... Объясни как вообще работает сортировка.
massiv =
Это я так понял ид приравнивается ячейке массива...
Объясни))
P.S. благодаря тебе, сделал то, что хотел, но не очень понял, то, что выше спрашиваю, объясни по-подробнее. Не знаком с безусловными циклами.
Где мой плюсик в репутации? Благодарит...

Я тебе дал код, который лично для тебя написал.
Пожалуйста, будь добр, разбери сам!
Исходя из твоих сообщений, ты хотел лишь подсказку, а подарили целый код.
Я не стану пояснять его, ты должен сам изучить, потому что всегда не будут за тебя решать.
А условие тут есть, без него не работало бы ничего, просто ты не видишь.
Научись читать код, понимать его.
>> Сортировка пузырьком <<.
Reply
#6

Ладненько, не хочешь объяснять - не объясняй. Тему пожалуйста не закрывайте. Может кто-то объяснит.
Reply
#7

Quote:
Originally Posted by jakebat
Посмотреть сообщение
Ладненько, не хочешь объяснять - не объясняй. Тему пожалуйста не закрывайте. Может кто-то объяснит.
Почитай про методы реализации swap функции, замена чисел местами, их как минимум 3 три метода. Лень все описывыть, да и в интернете более по литературному все изложенно. А после прочитай про пузырьков сортировку.
Reply
#8

Спасибо
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)