Предмет: Информатика, автор: lazarenko321542

кто может помочь с методом шейкера
0,65,-12,4,78,-9,-44,63,7,22


enxt: язык?

Ответы

Автор ответа: enxt
0

Вот пример реализации шейкерной сортировки на C++:

#include <iostream>

#include <algorithm>

using namespace std;

void shuffleSort(int *arr, int n)

{

   bool swapped = true;

   int start = 0;

   int end = n - 1;

   while (swapped)

   {

       swapped = false;

       for (int i = start; i < end; ++i)

       {

           if (arr[i] > arr[i + 1])

           {

               swap(arr[i], arr[i + 1]);

               swapped = true;

           }

       }

       if (!swapped)

           break;

       swapped = false;

       --end;

       for (int i = end - 1; i >= start; --i)

       {

           if (arr[i] > arr[i + 1])

           {

               swap(arr[i], arr[i + 1]);

               swapped = true;

           }

       }

       ++start;

   }

}

int main()

{

   int arr[] = {5, 1, 4, 2, 8};

   int n = sizeof(arr) / sizeof(arr[0]);

   shuffleSort(arr, n);

   for (int i = 0; i < n; i++)

       cout << arr[i] << " ";

   return 0;

}

А вот пример реализации шейкерной сортировки на Python:

def shuffle_sort(arr):

   n = len(arr)

   swapped = True

   start = 0

   end = n - 1

   while swapped:

       swapped = False

       for i in range(start, end):

           if arr[i] > arr[i + 1]:

               arr[i], arr[i + 1] = arr[i + 1], arr[i]

               swapped = True

       if not swapped:

           break

       swapped = False

       end -= 1

       for i in range(end - 1, start - 1, -1):

           if arr[i] > arr[i + 1]:

               arr[i], arr[i + 1] = arr[i + 1], arr[i]

               swapped = True

       start += 1

arr = [5, 1, 4, 2, 8]

shuffle_sort(arr)

print(arr)

Похожие вопросы
Предмет: Английский язык, автор: jhfbu067
Предмет: Математика, автор: lobacnatalia25
Предмет: Информатика, автор: tsapkovanasta62