Задача.*
Дан массив случайных чисел в диапазоне от -20 до +20. Необходимо найти позиции крайних отрицательных элементов (самого левого отрицательного элемента и самого правого отрицательного элемента) и отсортировать элементы, находящиеся между ними.
Код javascript:
var arr = [1,2,-3,4,5,18,-20,2,5,-7,4,3,-1,8];
function func(arr) {
var arr_ni = []; // массив индексов отрицательных элементов
/* проходимся по исходному массиву и сохраняем индексы
всех отрицательных элементов в отдельный массив*/
for(i = 0; i < arr.length; i++) {
if (arr[i] < 0) {
arr_ni.push(i);
}
}
if (arr_ni.length == 0) {
return 'Массив не содержит отрицательных элементов';
}
if (arr_ni.length == 1) {
return 'Массив содержит один отрицательный элемент';
}
// индекс самого левого отрицательного элемента
var left_i = parseInt(arr_ni.slice(0,1));
// индекс самого правого отрицательного элемента
var right_i = parseInt(arr_ni.slice(-1));
// массив элементов, которые находятся между крайними отрицательными эл-ми
var sort_arr = arr.slice(left_i+1, right_i);
// сортировка
sort_arr.sort(function(a,b){return a-b;});
// заменяем в исходном массиве неотсортированные элементы отсортированными
arr.splice(left_i+1, sort_arr.length, sort_arr);
return arr;
}
document.write(arr);
document.write("<br>");
document.write(func(arr));
Результат:
1,2,-3,4,5,18,-20,2,5,-7,4,3,-1,8
1,2,-3,-20,-7,2,3,4,4,5,5,18,-1,8