იმავე ტიპის მონაცემების ნებისმიერი თანმიმდევრობა შეიძლება წარმოდგენილი იყოს როგორც სია. სიების შეკვეთა და დალაგება შესაძლებელია. ამ უკანასკნელ შემთხვევაში, მონაცემებთან მუშაობა, სასურველი მნიშვნელობის პოვნა და სიის ელემენტებზე წვდომა გარკვეულ სირთულეებს იწვევს. სიმების ცვლადების სია ჩვეულებრივ დალაგებულია ანბანურად. დახარისხების მრავალი მეთოდი არსებობს, თითოეულ შემთხვევაში უნდა აირჩიოთ ყველაზე ოპტიმალური ალგორითმი.
ინსტრუქციები
Ნაბიჯი 1
დახარისხების საუკეთესო მეთოდის არჩევისას გასათვალისწინებელია ორი რამ: დახარისხების ოპერაციისთვის გატარებული დრო და დამხმარე შენახვისთვის საჭირო მეხსიერების რაოდენობა. დახარისხების ალგორითმები, რომლებიც არ საჭიროებს დამატებით მეხსიერებას, მოიხსენიება როგორც”ადგილზე”. განსახორციელებლად ერთ-ერთი უმარტივესი არის ბუშტის ნელი დალაგება, რომელიც ათვალიერებს სიაში მოცემულ თითოეულ წყვილს და ანაწილებს ადგილებს სასურველი რიგის მიხედვით.
ნაბიჯი 2
არსებობს დალაგების უფრო სწრაფი მეთოდი სიაში მინიმალური ან მაქსიმალური პუნქტის პოვნის გზით. ანბანური დალაგების შემთხვევაში, სიაში გადასვლისას, თქვენ უნდა იპოვოთ მისი მაქსიმალური ელემენტი - ეს იქნება სტრიქონი, რომელიც იწყება ანბანის დასაწყისთან უახლოესი ასოთი. აღმოჩენისთანავე, სტრიქონი შეიცვლება სიაში პირველი პუნქტით, პირველივე გადასვლისას. სიის შემდგომი განხილვის შემდეგ, პირველი ადგილი გამოირიცხება, შემდეგი მაქსიმალური ელემენტი ეძებს, მეორე ადგილზე განთავსდება და ა.შ. დახარისხების პროგრამის კოდი C ++ - ში სიის მაქსიმალური ელემენტის პოვნის მეთოდით: String Arr [20], cTemp; int N = 20, Max, Pos; for (int i = 0; i <N- 1; i ++) {Max = Arr ; პოზი = i; for (int j = 0; j <N; j ++) {if (Arr [j] <Max) {Max = Arr [j]; Pos = j; } cTemp = Arr ; Arr = Arr [Pos]; Arr [Pos] = cTemp; }}
ნაბიჯი 3
სტრიქონის მონაცემების სიაში შეკვეთის ყველაზე ოპტიმალური გადაწყვეტა არის ჩასმის დალაგება. მისი არსი იმაში მდგომარეობს, რომ სიაში ყოველი გადატანისას, მოცემულია გარკვეული რაოდენობის ელემენტების სიის მოწესრიგებული ნაწილი, ამრიგად, განსახილველი შემდეგი ელემენტი განთავსებულია სიაში შესაფერის ადგილზე. ჩასმის დალაგების ალგორითმის C ++ კოდი: სიმები Arr [20], cTemp; int N = 20; for (int i = 1, j = 0; i <N; i ++) {cTemp = Arr ; j = i - 1; while (cTemp <Arr [j]) {Arr [j + 1] = Arr [j]; კ - თუ (j <0) შესვენება; Arr [j + 1] = cTemp; }}