Алгоритъм за сортиране – метод на пряката селекция

by Ivan Todorov

This free e-book was created with
Ourboox.com

Create your own amazing e-book!
It's simple and free.

Start now

Алгоритъм за сортиране – метод на пряката селекция

  • Joined Mar 2021
  • Published Books 1

1. Как работи методът на пряката селекция?

      Алгоритъмът работи по следния начин:

  1. Намира най-малкия елемент в списъка като сравнява първият елемент с всички останали

  2. Разменя го с елемента на първа позиция

  3. Повтаря горните две стъпки за всеки следващ елемент

2

2. Пример стъпка по стъпка

 

    

Нека имаме масив със следните елементи: 64,25,12,22,11 и искаме да го сортираме във възходящ ред като използваме метода на пряката селекция. На всяка стъпка елементите, които са удебелени биват разменяни.

Първо преминаване:
64 25 12 22 11  25 64 12 22 11
25 64 12 22 11  12 64 25 22 11
12 64 25 22 11  12 64 25 22 11
12 64 25 22 11  11 64 25 22 12
След първото преминаване най-малкият елемент на масива се намира на първа позиция.

Второ преминаване:

11 64 25 22 12  11 25 64 22 12
11 25 64 22 12  11 22 64 25 12
11 22 64 25 12  11 12 64 25 22
Трето преминаване:
11 12 64 25 22  11 12 25 64 22
11 12 25 64 22  11 12 22 64 25
Четвърто преминаване:
11 12 22 64 25  11 12 22 25 64

3

4

2. Пример на C# за сортиране на числа по метода на пряката селекция

 

using System;
class SelectionSort
{
    static void Main()
    {

        int[] array = new int[] { 64, 25, 12, 22, 11 };
        for (int i = 0; i < array.Length – 1; i++)
        {
            for (int j = i + 1; j < array.Length; j++)
            {
                if (array[i] > array[j]) // swap items
                {
                    int tmp = array[i];
                    array[i] = array[j];
                    array[j] = tmp;
                }
            }
        }
        for (int i = 0; i < array.Length; i++) // print sorted array
        {
            Console.Write(array[i] + " ");
        }
    }
}
5

3. Пример на C++ за сортиране на числа по метода на пряката селекция

 

#include <iostream>
using namespace std;

int main()
{
	int array[5]={31,34,12,22,11};
	for(int i=0; i<5; ++i)
	{
		int min = i;
		for(int j=i; j<5; ++j)
		if(array[min]>array[j])
		min = j;

		swap(array[min],array[i]);
	}

	for(int i=0; i<5; i++)
        {
		cout << array[i] << "t";
	}
	return 0;

}

 

 

6

4. Анализ

 

Методът на пряката селекция не е труден да се анализира в сравнение с други сортиращи алгоритми. За да намерим най-малкият елемент се изисква да сканираме всички n на брой елементи (това отнема n – 1 сравнения) и след това да го разменим с първата позиция. За да намерим следващият най-малък елемент се изисква да сканираме оставащите n – 1 елементи и така нататък. Общият брой сравнения е равен на

(n − 1) + (n − 2) + … + 2 + 1 = n(n − 1) / 2 = Θ(n2)

според формулата за сбор на аритметична прогресия. Всяко от тези n – 1 преминавания по масива изисква една размяна на елементи (последният елемент е вече на правилното място).

7
This free e-book was created with
Ourboox.com

Create your own amazing e-book!
It's simple and free.

Start now

Ad Remove Ads [X]
Skip to content