ბუშტულასებრი სორტირება

მასალა ვიკიპედიიდან — თავისუფალი ენციკლოპედია
ნავიგაციაზე გადასვლა ძიებაზე გადასვლა
Wikitext-ka.svg ამ სტატიას ან სექციას ვიკიფიცირება სჭირდება ქართული ვიკიპედიის ხარისხის სტანდარტების დასაკმაყოფილებლად.

იმ შემთხვევაში, თუ არ იცით, თუ რა არის ვიკიფიცირება, იხ. დახმარების გვერდი.
სასურველია ამის შესახებ აცნობოთ იმ მომხმარებლებსაც, რომელთაც მნიშვნელოვანი წვლილი მიუძღვით სტატიის შექმნაში. გამოიყენეთ: {{subst:ვიკიფიცირება/info|ბუშტულასებრი სორტირება}}

„ბუშტულასებრი“ სორტირების სიმულაცია

„ბუშტულასებრი“ სორტირება — მონაცემთა სტაბილური დახარისხების ერთგვარი ალგორითმი პროგრამირებაში. მისი მუშაობის პრინციპი შემდეგნაირია: ის ნაბიჯ-ნაბიჯ ამოწმებს მასივის მოსაზღვრე ელემენტებს და უცვლის ადგილებს, თუ მათი თანმიმდევრობა არასწორია. ალგორითმი მეორდება მანამ, სანამ მასივი არ დახარისხდება. მიუხედავად იმისა, რომ მოცემული ალგორითმი მარტივია, ის ნელი და არაპრაქტიკულია ამოცანების უმრავლესობაში. პრაქტიკული მხოლოდ იმ შემთხვევაშია, თუ შემოტანილი მნიშვნელობა უმეტესად დახარისხებულია და შესაბამისად დროის მცირე რესურს მოითხოვს. იგი მუშაობს -ში, რაც არაეფექტურობას ცხადყოფს.

იმპლემენტაცია C++-ზე[რედაქტირება | წყაროს რედაქტირება]

#include <iostream>
using namespace::std;
int main(){
    int n;
    // ცვლადში ჩავწეროთ მასივის ზომა
    cout<<"Shemoitanet masivis zoma"<<endl;
    cin>>n;
    // შევქმნათ n-ზომის მასივი მთელი ელემენტებით
    int mas[n];
    // for-ციკლით შევავსოთ მასივი
    cout<<"Shemoitanet masivis elementebi"<<endl;
    for(int i=0; i<n; i++)
        cin>>mas[i];
    /*სორტირებისთვის შევქმნათ გარე for-ციკლი საწყისი ცვლადით i,
     რომელიც შეინახავს ბოლო ელემენტს, რომელიც არასწორია თანმიმდევრულად.
     ცხადია, თავდაპირველად i ბოლო ელემენტის ინდექსის ტოლია*/
    for(int i=n-1; i>0; i--){
        // შევქმნათ შიდა for-ციკლი, რომელიც გადაარჩევს ელემენტებს i-მდე
        for(int j=0; j<i; j++)
            //თუ j-ური წევრის შემდეგი ელემენტი მასზე მცირეა, მაშინ მნიშვნელობებს ჩავანაცვლებთ
            if(mas[j]>mas[j+1])swap(mas[j],mas[j+1]);
    }
    // გამოვიტანოთ დალაგებული მასივი
    cout<<"dalagebuli masivi:"<<endl;
    for(auto i:mas)
        cout<<i<<" ";

რესურსები ინტერნეტში[რედაქტირება | წყაროს რედაქტირება]