Как проверить массив на наличие дублей: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 1: | Строка 1: | ||
{{Scripting Tutorials | {{Scripting Tutorials | ||
|Description=Как проверить массив на наличие дублей? | |Description=Как проверить массив на наличие дублей? Здесь приводятся решения на нескольких языках высокого уровня - JavaScript, Python, C++, NetLogo, Snap! | ||
|Field_of_knowledge=Информатика | |Field_of_knowledge=Информатика | ||
|FieldActivity=Computational Thinker | |FieldActivity=Computational Thinker | ||
|Возрастная категория=10 | |Возрастная категория=10 | ||
|similar_concepts=Сортировка | |similar_concepts=Сортировка | ||
|Environment=Snap!, JavaScript | |Environment=Snap!, JavaScript, Python | ||
}} | }} | ||
=== Описание проблемы === | |||
У нас есть [[массив]] элементов и мы хотим узнать, встречаются ли в нём повторяющиеся элементы | |||
=== Сравнение === | |||
{| {{prettytable}} | |||
|- | |||
!{{Hl2}}| JS | |||
!{{Hl2}}| [[Snap!]] | |||
|- | |||
| | |||
<syntaxhighlight lang="javascript" start="1"> | |||
const hasDuplicates = function (num) { | |||
//loop the list, our O(n) op | |||
for (let i = 0; i < nums.length; i++) { | |||
const thisNum = nums[i]; | |||
//loop the list again, the O(n^2) op | |||
for (let j = 0; j < nums.length; j++) { | |||
//make sure we're not checking same number | |||
if (j !== i) { | |||
const otherNum = nums[j]; | |||
//if there's an equal value, return | |||
if (otherNum === thisNum) return true; | |||
} | |||
} | |||
} | |||
return false; | |||
} | |||
const nums = [1, 2, 3, 4, 5, 5]; | |||
hasDuplicates(nums);//true | |||
</syntaxhighlight> | |||
| | |||
[[Файл:Has dublicate.png|400px]] | |||
|} | |||
| Строка 36: | Строка 69: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Вариант 2 - | ==== Вариант 2 - [[Двоичный поиск]] ==== | ||
<syntaxhighlight lang="javascript" > | <syntaxhighlight lang="javascript" > | ||
Текущая версия от 09:48, 5 марта 2023
| Описание | Как проверить массив на наличие дублей? Здесь приводятся решения на нескольких языках высокого уровня - JavaScript, Python, C++, NetLogo, Snap! |
|---|---|
| Область знаний | Информатика |
| Область использования (ISTE) | Computational Thinker |
| Возрастная категория | 10
|
| Поясняющее видео | |
| Близкие рецепту понятия | Сортировка |
| Среды и средства для приготовления рецепта: | Snap!, JavaScript, Python |
Описание проблемы
У нас есть массив элементов и мы хотим узнать, встречаются ли в нём повторяющиеся элементы
Сравнение
| JS | Snap! |
|---|---|
const hasDuplicates = function (num) {
//loop the list, our O(n) op
for (let i = 0; i < nums.length; i++) {
const thisNum = nums[i];
//loop the list again, the O(n^2) op
for (let j = 0; j < nums.length; j++) {
//make sure we're not checking same number
if (j !== i) {
const otherNum = nums[j];
//if there's an equal value, return
if (otherNum === thisNum) return true;
}
}
}
return false;
}
const nums = [1, 2, 3, 4, 5, 5];
hasDuplicates(nums);//true
|
Вариант 1 - вложенный цикл
const hasDuplicates = function (num) {
//loop the list, our O(n) op
for (let i = 0; i < nums.length; i++) {
const thisNum = nums[i];
//loop the list again, the O(n^2) op
for (let j = 0; j < nums.length; j++) {
//make sure we're not checking same number
if (j !== i) {
const otherNum = nums[j];
//if there's an equal value, return
if (otherNum === thisNum) return true;
}
}
}
return false;
}
const nums = [1, 2, 3, 4, 5, 5];
hasDuplicates(nums);//true
Вариант 2 - Двоичный поиск
const nums = [1, 2, 3, 4, 5];
const searchFor = function (items, num) {
}
const hasDuplicates = function (nums) {
for (let num of nums) {
if (searchFor(nums, num)) {
return true;
}
}
return false;
}
