Для установки нажмите кнопочку Установить расширение. И это всё.

Исходный код расширения WIKI 2 регулярно проверяется специалистами Mozilla Foundation, Google и Apple. Вы также можете это сделать в любой момент.

4,5
Келли Слэйтон
Мои поздравления с отличным проектом... что за великолепная идея!
Александр Григорьевский
Я использую WIKI 2 каждый день
и почти забыл как выглядит оригинальная Википедия.
Статистика
На русском, статей
Улучшено за 24 ч.
Добавлено за 24 ч.
Что мы делаем. Каждая страница проходит через несколько сотен совершенствующих техник. Совершенно та же Википедия. Только лучше.
.
Лео
Ньютон
Яркие
Мягкие

Из Википедии — свободной энциклопедии

Действие алгоритма на примере сортировки случайных точек.

Этот относительно простой алгоритм сортировки, разработанный для использования на параллельных процессорах, является модификацией пузырьковой сортировки. Суть модификации в том, чтобы сравнивать элементы массива под чётными и нечётными индексами с последующими элементами независимо. Алгоритм был впервые представлен Н. Хаберманом (N. Haberman) в 1972 году.

Описание алгоритма

Заводится флаг, определяющий отсортирован ли массив. В начале итерации ставится в состояние «истина», далее каждый нечётный элемент сверяется с последующим и если они стоят в неправильном порядке (предыдущий больше следующего), то они меняются местами, и флаг ставится в состояние «ложь». То же самое делается с чётными элементами. Алгоритм не прекращает работу, пока флаг не останется в состоянии «истина».

Реализация на C++

template < typename T, size_t N >
void oddEvenSorting(T (&array)[N]) {
	for (size_t i = 0; i < N; i++) {
	    // (i % 2) ? 0 : 1 возвращает 1, если i четное, 0, если i не четное
		for (size_t j = (i % 2) ? 0 : 1; j + 1 < N; j += 2) {
			if (array[j] > array[j + 1]) {
				std::swap(array[j], array[j + 1]);
			}
		}
	}
}

Реализация на JavaScript

function oddEvenSorting(array) {
    const arrayLength = array.length; //длина массива
	for (let i = 0; i < arrayLength; i++) {
	    // (i % 2) ? 0 : 1 возвращает 0, если i четное, 1, если i не четное
		for (let j = (i % 2) ? 0 : 1; j < arrayLength - 1; j += 2) {
			if (array[j] > array[j + 1])
				[array[j], array[j + 1]] = [array[j + 1], array[j]]; //swap
		}
    }
    return array;
}

Реализация на PHP

function FunctionOddEvenSort(&$array)
{
	$lengthArray = count($array);
	$sorted = false;
	while (!$sorted) {
		$sorted = true;
		for ($i = 0; $i < $lengthArray - 1; $i += 2) {
			if ($array[$i] > $array[$i + 1]) {
				FunctionSwapVariables($array[$i], $array[$i + 1]);
				$sorted = false;
			}
		}
		for ($i = 1; $i < $lengthArray - 2; $i += 2) {
			if ($array[$i] > $array[$i + 1]) {
				FunctionSwapVariables($array[$i], $array[$i + 1]);
				$sorted = false;
			}
		}
	}

	// for ($x = 0; $x < $lengthArray; $x++) { 
	// 	if (!$sorted) {
	// 		$sorted = true;
	// 		for ($i = 0; $i < $lengthArray - 1; $i += 2) {
	// 			if ($array[$i] > $array[$i + 1]) {
	// 				FunctionSwapVariables($array[$i], $array[$i + 1]);
	// 				$sorted = false;
	// 			}
	// 		}
	// 		for ($i = 1; $i < $lengthArray - 2; $i += 2) {
	// 			if ($array[$i] > $array[$i + 1]) {
	// 				FunctionSwapVariables($array[$i], $array[$i + 1]);
	// 				$sorted = false;
	// 			}
	// 		}
	// 	} else return 'Массив успешно отсортирован';
	// }
}

Реализация на Swift

func sortArray(array: inout [Int]) {
    var sorted = false
    
    while !sorted {
        sorted = true
        for k in stride(from: 0, to: array.count - 1, by: 2){
            if array[k] > array[k + 1] {
                array.swapAt(k, k+1)
                sorted = false
            }
        }
        
        for k in stride(from: 1, to: array.count - 1, by: 2){
            if array[k] > array[k + 1] {
                array.swapAt(k, k+1)
                sorted = false
            }
        }
    }
}

Литература

  • Кнут Д. Искусство программирования. Том 3. Сортировка и поиск. — Москва: Вильямс, 2000. — ISBN 978-5-8459-0082-1.
  • N. Haberman (1972) "Parallel Neighbor Sort (or the Glory of the Induction Principle), " CMU Computer Science Report (available as Technical report AD-759 248, National Technical Information Service, US Department of Commerce, 5285 Port Royal Rd Sprigfield VA 22151)
Эта страница в последний раз была отредактирована 15 февраля 2024 в 17:57.
Как только страница обновилась в Википедии она обновляется в Вики 2.
Обычно почти сразу, изредка в течении часа.
Основа этой страницы находится в Википедии. Текст доступен по лицензии CC BY-SA 3.0 Unported License. Нетекстовые медиаданные доступны под собственными лицензиями. Wikipedia® — зарегистрированный товарный знак организации Wikimedia Foundation, Inc. WIKI 2 является независимой компанией и не аффилирована с Фондом Викимедиа (Wikimedia Foundation).