Показать сообщение отдельно
  #15 (permalink)  
Старый 15.05.2013, 03:05
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Konstan_G
Всем привет! Я чайник в JS помогите разобраться с задачами.

Задача №2
Реализовать алгоритм. Дано два массива чисел с индексами от 0 до N, необходимо вывести на экран все числа которые одновременно присутствуют в обоих массивах.
Например, так (учитываются повторяющиеся элементы)

<script type="text/javascript">
function getIntersection(A,B)
{
    A.sort(function(a,b){return a-b;});    //Сортировка А и B по возрастанию.
    B.sort(function(a,b){return a-b;});

    var a0=A[0], b0=B[0], k1=1, k2=1;
 
    for (var i=1; i<A.length; i++)                  //Удаление повторяющихся элементов
      { if (A[i]!=a0){ A[k1++]=A[i]; a0=A[i]; } }   // в сортированных массивах А и B.
    A.length = k1;
 
    for (var i=1; i<B.length; i++)
      { if (B[i]!=b0) { B[k2++]=B[i]; b0=B[i]; } }        
    B.length = k2;

    var N = A.length, M = B.length, C = [];

    for (var i=0, j=0, k=0, m=0; k<N+M; k++)     //Слияние A и B в С с сохранением упорядоченности.
     { if (i==N){ C[k] = B[j++]; continue; }
       if (j==M){ C[k] = A[i++]; continue; }
       C[k] = (A[i]<B[j]) ? A[i++] : B[j++];
     }

    for (var i=1, j=0; i<C.length; i++)
     { if (C[i-1]==C[i]){ C[j++] = C[i-1]; } } //Удаление в C всех элементов,
    C.length = j;                              // кроме дублирующих.

    return C;
}
</script>
<button onclick="alert( getIntersection([-1,3,-4,5,2,6],[-1,0,8,1,2,9,3,-4,5,7]) )">Пример</button>

Последний раз редактировалось Demath, 19.05.2013 в 02:28. Причина: опечатка
Ответить с цитированием