Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Шелл әдісімен сұрыптау алгоритмін сипаттаңыз



Сұрыптау (Сортировка; sorting) - массив элементтерін белгілі бір заңдылықпен орындарын ауыстырып реттеупроцессін айтамыз. Мысалы, сандар массивін өсуі, кемуі бойынша сұрыптау, жолдар массивін алфавит бойынша сұрыптау және тағы басқа. Сұрыптау мақсаты - көптеген сұрыпталған обьектінің ішінен белгілі бір элементті іздеуді оңайлату. Ақпараттық жүйелерде мәліметтерді сұрыптаудың маңызы өте зор.

Қосып сұрыптау әдісінің дамыған түрі Шелл әдісі болып табылады, басқаша оны аралығы азаятын қосып сұрыптау деп аталады. Біз алгоритмді жалпы түрде қарастырмймыз, тек сұрыпталатын массив элементтерінің саны 2 санының дәрежесі болып табылады. 2n элементтерінен тұратын массив үшін алгоритм келесі түрде орындалады. Бірінші фазада массивтің барлық элементтерінің сыңарының арасы 2(n-1) болатындай қосып сұрыптайды. Еінші фазада алынған массивтің элементтері сұрыпталады, олардың арасы 2(n-2) болады. Осылай элементтердің арасы бірге тең болғанша фазалар сұрыпталады және соңғы қосып сұрыптауды орындамаймыз.

Программасы:

#include <iostream.h>

using namespace std;

int i, j, n, d, count;

void Shell(int A[], int n)

{

d=n;

d=d/2;

while (d>0)

{

for (i=0; i<n-d; i++)

{

j=i;

while (j>=0 && A[j]>A[j+d])

{

count=A[j];

A[j]=A[j+d];

A[j+d]=count;

j--;

}

}

d=d/2;

}

for (i=0; i<n; i++) cout<<A[i]<<" "; //массивті шығарамыз

}

//басты функция

void main()

{

setlocale(LC_ALL,"Rus");

cout<<"razmer massiva ";

cin>>n;

int *A= new int[n];

for (i=0; i<n; i++) //массивті енгізу

{ cout<<i+1<<" element ";

cin>>A[i]; }

cout<<"\nSuryptalgan massiv: ";

Shell(A, n);

system("pause>>void");

}





Дата публикования: 2015-07-22; Прочитано: 3190 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...