Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 25.02.2017
Сообщений: 17

Перестановка в обратном порядке элементов массив между min и max значениями

18.04.2017, 21:06. Показов 6180. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Господа программисты. Подсобите пожалуйста с задачей где нужно переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным значениями. Пример: ввожу 1, 2, -3, 4, 5, 6, 7, 8, 2. Получаю 1, 2, -3, 7, 6, 5, 4, 8, 2. Максимальное и минимальное нашел, пользуюсь методом reverse(), но не понимаю как переставить местами элементы, что между минимальным и максимальным. Буду очень Вам признателен.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.04.2017, 21:06
Ответы с готовыми решениями:

Заполнить массив из 20 чисел случайными значениями и вывести в обратном порядке
нужно написать код: Дан массив из 20 чисел. Заполнить его случайными значениями и вывести его в строке в обратном порядке. Функция...

Найти max и min элементы массива y и сформировать массив z из элементов массива y, находящихся между max и min y. Записать массив z в обратном порядке
Дан массив Х{80 элементов}. Вычислить {y}_{i}=sin\sqrt{{x}_{i}}+{cos}^{2}{{x}_{1}}^{2} Найти max и min элементы массива y и...

Переписать в обратном порядке элементы, расположенные между min и max положительными элементами массива
Ребята помогите решить вот такую задачку. В целочисленном массиве размера N переписать в обратном порядке элементы, расположенные между min...

8
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
18.04.2017, 21:24
nabu2505, так?
JavaScript
1
2
3
4
5
6
7
//по возрастанию
var a=[1, 2, -3, 7, 6, 5, 4, 8, 2];
a.sort(function(a,b){return a-b;});
alert(a.join()); //-3,1,2,2,4,5,6,7,8
//по убыванию
a.sort(function(a,b){return a-b;});
alert(a.reverse().join()); //8,7,6,5,4,2,2,1,-3
1
0 / 0 / 0
Регистрация: 25.02.2017
Сообщений: 17
18.04.2017, 21:39  [ТС]
Не совсем так. Ввожу 1, 2, -3, 4, 5, 6, 7, 8, 2. Получаю 1, 2, -3, 7, 6, 5, 4, 8, 2. То есть обратный порядок относится только к элементам между минимальным и максимальным.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
18.04.2017, 22:24
JavaScript
1
2
3
4
5
6
var arr = [1, 2, -3, 4, 5, 6, 7, 8, 2];
var a = arr.slice(0, arr.indexOf(Math.min.apply(null, arr))+1);
var b = arr.slice(arr.indexOf(Math.min.apply(null, arr))+1, arr.indexOf(Math.max.apply(null, arr)));
var c = arr.slice(arr.indexOf(Math.max.apply(null, arr)));
var newArr = [];
console.log(newArr.concat(a,b.reverse(),c)); //1, 2, -3, 7, 6, 5, 4, 8, 2
1
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
19.04.2017, 00:28
Лучший ответ Сообщение было отмечено nabu2505 как решение

Решение

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function arrayReSort(array){
    var min = null, max = null, minI, maxI, elem, i;
    for (i = 0, len = arr.length; i < len; ++i)
    {
        elem = arr[i];
        if (min === null || min > elem) min = elem, minI = i;
        if (max === null || max < elem) max = elem, maxI = i;
    }
    minI > maxI && (minI = [maxI, maxI = minI][0]); //reverse
    return [].concat(array.slice(0, minI + 1), array.slice(minI+1, maxI).reverse(), array.slice(maxI, i))
}
var arr = [1, 2, -3, 4, 5, 6, 7, 8, 2];
console.log(arrayReSort(arr));  //1, 2, -3, 7, 6, 5, 4, 8, 2
var arr2 = [1, 2, 8, 4, 5, 6, 7, -3, 2];
console.log(arrayReSort(arr));  //1, 2, -3, 7, 6, 5, 4, 8, 2
Вариант
1
 Аватар для Lazy_Den
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
19.04.2017, 02:05
Я бы немного изменил примеры коллег, т.к. предполагаю, что минимальное и максимальное значения затрагиваться не должны, в какой бы позиции они не находились.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function sortRange(a) {
    var range = [
        a.indexOf(Math.max.apply(null, a)),
        a.indexOf(Math.min.apply(null, a))
    ].sort();
    return [].concat(
        a.slice(0, range[0] + 1),
        a.slice(range[0] + 1, range[1]).reverse(),
        a.slice(range[1])
    );
}
var arr = [1, 2, -3, 4, 5, 6, 7, 8, 2];
console.log(sortRange(arr)); // [ 1, 2, -3, 7, 6, 5, 4, 8, 2 ]
 
var arr = [1, 2, 8, 4, 5, 6, 7, -3, 2];
console.log(sortRange(arr)); // [ 1, 2, 8, 7, 6, 5, 4, -3, 2 ]
1
0 / 0 / 0
Регистрация: 25.02.2017
Сообщений: 17
19.04.2017, 08:09  [ТС]
Спасибо Вам большое за помощь. Последний ответ, это то что нужно.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
19.04.2017, 11:01
Цитата Сообщение от nabu2505 Посмотреть сообщение
Последний ответ, это то что нужно.
Можешь объяснить почему возникло такое мнение.
К примеру решение 4 раза проходит массив, находя min, max, а затем индексы элементов
По собственному опыту скажу, что indexOf немного тормознутая функция(это не говорит о том, что я ее не использую, но остаток остался)
К примеру я предолжил делать данные вещи в один проход(цикл).
0
0 / 0 / 0
Регистрация: 25.02.2017
Сообщений: 17
19.04.2017, 11:09  [ТС]
Ваш ответ то что нужно, я еще не понимаю таких тонкостей как время обработки (что быстрее и т.д). Спасибо за разъяснение по поводу indexOf().
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2017, 11:09
Помогаю со студенческими работами здесь

Массив: сформировать новый массив из элементов первого массива стоящих между min и max
сформировать новый массив из элементов первого массива стоящих между min и max. Помогите плеес. На форме стринг грид должен быть и вывод в...

Сформировать массив Z из элементов, находящихся между min и max элементов массива Z
дан массив из 100 элементов, Вычислить y1=xi2-3xi+2/xi2+2xi-1. сформировать массив Z из элементов, находящихся между min и max...

Сумма между min и max значениями массива ArrayList
Подскажите плз! создал массив случайных чисел : public class MinMaxBody { public int globalLine; public int globalColumn;...

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его мин. и макс. значениями
Здравствуйте, помогите пожалуйста.:resent: Задача: Дан массив размера 10 Переставить в обратном порядке элементы массива, расположенные...

Дан массив A(N, M). Найти среднее арифметическое элементов находящихся между max и min элементов массива
Дан массив A(N, M). Найти среднее арифметическое элементов находящихся между max и min элементов (или min и max элементами) массива. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru