Сообщение от 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>