პროგრამისტები, რომლებიც გადადიან კომპიუტერიდან და ვებ-განვითარებიდან მობილური მოწყობილობების ან ჩაშენებული სისტემების კოდირებაზე, აღმოაჩენენ, რომ მეტი დრო ეთმობა საკუთარი მონაცემთა სტრუქტურებისა და ალგორითმების შერჩევასა და კოდირებას. ნაკლები მეხსიერებითა და მონაცემთა შეზღუდული შენახვით, არ არის ადგილი წინასწარ ჩაშენებული ბიბლიოთეკებისთვის ან ჩარჩოებისთვის. ასე რომ, მათთვის, ვისაც უნდა დაწეროს საკუთარი დახარისხების რუტინები, აქ მოცემულია რამდენიმე მოსაზრება დაბალი ბუშტის დალაგების არჩევისას.
ფონი
ბუშტების დალაგება არის მარტივი ალგორითმი, რომელიც ახარისხებს მეხსიერებაში არსებული ელემენტების სიას. მასივის გათვალისწინებით, კოდი არაერთხელ ადარებს მიმდებარე ნივთების თითოეულ წყვილს და ცვლის მათ, თუ ისინი წესრიგში არ არიან. პროცესი მეორდება მანამ, სანამ აღარ მოხდება გაცვლა. თუ შესაძლებელი იქნებოდა მასივის დათვალიერება დალაგების პროცესში, დაბალი მნიშვნელობები "ბუშტებს" ზევით, ხოლო დიდი მნიშვნელობები ქვევით ჩაიძირებოდა. აქ არის შესაბამისი კოდი Visual Basic 2010-ში:
დღის ვიდეო
ხოლო swap = True swap = False For i = 0 to tbl.სიგრძე - 2 თუ tbl (i) > tbl (i + 1) მაშინ tmp = tbl (i) tbl (i) = tbl (i + 1) tbl (i + 1) = tmp swap = True End If Next End while
როდის ავირჩიოთ ბუშტების დალაგება
ამ ალგორითმს რამდენიმე უპირატესობა აქვს. მარტივი დასაწერია, ადვილად გასაგები და მხოლოდ რამდენიმე სტრიქონის კოდი სჭირდება. მონაცემები დალაგებულია ადგილზე, ასე რომ, მეხსიერების რაოდენობა მცირეა და დახარისხების შემდეგ, მონაცემები მეხსიერებაშია, მზად არის დასამუშავებლად. მთავარი მინუსი არის დახარისხების დრო. საშუალო დრო თითქმის ექსპონენტურად იზრდება ცხრილის ელემენტების რაოდენობის მატებასთან ერთად. ნივთების ათჯერ რაოდენობას თითქმის ასჯერ მეტი დრო სჭირდება დახარისხებას.
სხვა მასივის სორტირება
დახარისხების ალგორითმები განსხვავდება სირთულის, სიჩქარისა და ზედნადების მიხედვით. ბუშტების დალაგება ყველაზე ნაკლებად რთული, მაგრამ ასევე ერთ-ერთი ყველაზე ნელია. სხვა მასივებზე დაფუძნებული დალაგება, როგორიცაა ჩასმის დალაგება და გაცვლის დალაგება, ცოტა უფრო სწრაფია, მაგრამ უფრო მეტ კოდს იღებს (იხილეთ ქვემოთ მოცემული მითითებები). მასივზე დაფუძნებული დალაგების მთავარი უპირატესობა არის ის, რომ ისინი იყენებენ ყველაზე ნაკლებ კოდს და იღებენ სამუშაო მეხსიერების ნაკლებ რაოდენობას. განვიხილოთ ეს ჯიშები მარტივი მასივებისთვის რამდენიმე ასეულზე ნაკლები ელემენტისთვის.
კომპლექსური დალაგების ალგორითმები
მონაცემთა უფრო დიდი ნაკრები მოითხოვს უფრო რთულ კოდს და მეტ მეხსიერებას. სწრაფი დალაგება და გროვის დალაგება ყოფს და კოპირებს მონაცემთა ნაკრების შედარებების რაოდენობის ოპტიმიზაციის მიზნით. სწრაფი დალაგება გამუდმებით ყოფს სიას, შემდეგ აწყობს მას დალაგებული თანმიმდევრობით. გროვის დალაგება აკოპირებს მონაცემებს ხის სტრუქტურაში, შემდეგ კვეთს ხეს, რათა დააკოპიროს მონაცემები წესრიგში. ორივე სწრაფი და ეფექტურია, მაგრამ იღებს უფრო მეტ კოდს და ბევრად უფრო მუშა მეხსიერებას. აირჩიეთ ეს ალგორითმები დიდი მონაცემთა ნაკრებისთვის.