- •5В011100 - «Информатика» мамандығына арналған
- •1. Глоссарий
- •2. Дәрістер
- •Программалар анализінің ережелері:
- •Сұрыпталған тізбектерді біріктіру
- •Сұрыпталған тізбектерді біріктіру алгоритмі
- •Бинарлық іздеу.
- •Бір байланысты сызықтық тізім.
- •Табиғи бірігу арқылы сұрыптау
- •Байланған сызықтық тізімдер
- •Тізімдермен жүргізілетін операциялар
- •Реттелген тізімді жасау
- •Екі байланысты сызықтық тізім
- •Стек операциялары
- •Стектер қолданылады:
- •Шірет объектісімен жүргізілетін операциялар
- •Шіреттер қолданылады:
- •Приоритеттер шіреті
- •Тармақ тәрізді құрылымды беру әдістері
- •2. Кірістірілген жақшалар:
- •Кірістірілген жиындар.
- •4. Кесінді тізбек.
- •Екілік тармақтың құрылымы.
- •Өрнектердің екілік тармақтары
- •Екілік тармаќтармен ж‰ргізілетін амалдар
- •Тармаќты толыѓымен ќарап µту алгоритмі
- •Екілік іздеу тармаѓынан элементті алып тастау.
- •Турнирлік с±рыптау
- •Массивті пирамидаѓа т‰рлендіру
- •Пирамидаға элемент қосу
- •Элементтерді пирамидадан өшіру
- •Пирамидалық сұрыптау
- •Балансталған тармаққа қосу
- •3 Зертханалық сабақтар Зертханалық жұмыс №1
- •Жалпы мәлімет
- •Зертханалық жұмыс №2
- •Жалпы мәлімет
- •Тармақ тәрізді құрылымды беру әдістері
- •2. Кірістірілген жақшалар:
- •Кірістірілген жиындар.
- •4. Кесінді тізбек.
- •Зертханалық жұмыс №3
- •Жалпы мәлімет
- •Зертханалық жұмыс №4
- •Жалпы мәлімет
- •Ортасынан бөлу алгоритмі
- •Зертханалық жұмыс №5
- •Жалпы мәлімет
- •Ортасынан бөлу алгоритмі
- •Зертханалық жұмыс №6
- •Жалпы мәлімет
- •Екілік тармақтармен жүргізілетін амалдар
- •Зертханалық жұмыс №7
- •Жалпы мәлімет
- •Бинарлық іздеу.
- •Зертханалық жұмыс №8
- •Жалпы мәлімет
- •Зертханалық жұмыс №9
- •Жалпы мәлімет
- •Зертханалық жұмыс №10
- •Жалпы мәлімет
- •Зертханалық жұмыс №11
- •Жалпы мәлімет
- •Сұрыпталған тізбектерді біріктіру
- •Сұрыпталған тізбектерді біріктіру алгоритмі
- •4.Студенттердің өздік жұмыстар жоспары
- •Бақылаушы - өлшемдік құралдар
Зертханалық жұмыс №10
Тақырыбы:Сұрыптау есебін шешу. Сұрыптау алгоритмдері: таңдау арқылы сұрыптау, жылдам және таратпалы сұрыптау.
Жалпы мәлімет
Массивтерді сұрыптау алгоритмдері 4-ке бөлінеді:
Таңдау арқылы сұрыптау.
Ауыстыру арқылы сұрыптау (көпіршік әдіісі).
Қою арқылы арқылы сұрыптау.
Тез сұрыптау.
Сұрыптау немесе объектілер тізімін реттеу деп осы объектілердің қандай да бір сызықтық реттілікке қатысты өсуі мен кемуі бойынша орындауды айтамыз. Сұрыптаудың мәні сонда жазулар тізімінің реттілігін кілттік өріс мәндері кемімейтін тізбек құратындай етуіміз керек. Басқа сөзбен айтқанда R1, R2, .. , Rn жазулары кілттік мәндері K1, K2,…,Kn орналасуы керек. Ki1<Ki2<….<Kin.
Мұнда реттелген тізбектегі кілттердің бірдей мәндері бар жазулар бір-бірімен қатар орындалады. Сұрыптау әдістері 2 категорияға бөлінеді:
- массивтерді сұрыптау (ішкі сұрыптау)
- тізбектелген файлдарды сұрыптау (сыртқы сұрыптау).
Массивтер ішкі оперативті жадыда орналасады. Оған кез келген уақытта тез кіруге болады. Ал сыртқы сұрыптау реттеуге тиісті мәліметтер көлемі өте үлкен болғанда мәліметтердің оперативті жадыға симай қалғанда қолданылады.
Таңдау көмегімен сұрыптау.
А массивінде мәліметтердің n элементі сақталған және бұл массив бойынша n-1 жүріс етеді. 0-ші жүрісте ең кіші элемент таңдалады. Ол кейіннен А0 элементпен айырбасталады. Келесі жүрісте тізімнің А1 элементінен бастап реттелмеген бөлігі қарастырылады. Мұнда ең кіші элемент тауып алынады да А1-де сақталады. Ары қарай А2 ... Аn-1 тізіміндегі ең кіші элемент ізделеді. Табылған мән А2-мен ауысады. Осылайша, n-1 жүріс өтеді. Соңында тізімнің реттелмеген аяғы 1 элементке дейін қысқарады. Сол элемент ең үлкен болып табылады.
Мысалға, 50,20,40,75,35 массив берілген.
0-жүріс. 20-ны таңдаймыз. Оны А0-мен ауыстырамыз (А0=50).
20,50,40,75,35.
1-жүріс. 35 таңдаймыз. Оны А1-мен орын ауыстырамыз.
20,35,40,75,50.
2-жүріс. 40 таңдаймыз. Оны А2-мен орын ауыстырамыз.
20,35,40,75,50.
3-жүріс. 50 таңдаймыз. Оны А3-пен орын ауыстырамыз.
20,35,40,50,75.
Соңғы қалған 75 саны ең үлкен элемент сұрыпталып шыққанда:
20,35,40,50,75.
Сұрыптау – массив өлшеміне ғана тәуелді салыстырулардың белгіленген санына ие болуы керек. i -ші жүрісте (A … A )-ге дейінгі элементтердің салыстырулар саны (n-1-(i+1)+1)=n-i-1 тең болады.
Салыстырулардың жалпы саны мына формуламен анықталады:
Алгоритмнің күрделілігі – О(n ) тең болады.
Ауыстыру арқылы сұрыптау.
Ауыстыру арқылы сұрыптау. N элементтен тұратын а массивін айырбастау арқылы сұрыптау үшін немесе көпіршік әдісімен сұрыптау үшін n-ші жүріс қажет. Әрбір жүрісте көршілес екі элемент салыстырылады және егер 1-сі үлкен болса немесе 2-не тең болса, онда бұл элементтер орындарымен ауысады. әрбір жүрістің аяғында ең кіші элемент ішкі тізімнің жоғарғы жағына көтеріліп отырады. Бұл қайнап жатқан судың ішіндегі ауаның көбікшесіне ұқсас. Сондықтан көпіршік әдісі деп аталады.
Мысал. Массив:
50,20,40,75,35
0-жүріс. 50 мен 20салыстырылады.
20,50,40,75,35
1-жүріс. 50 мен 40 салыстырылады
20,40,50,75,35
2-жүріс. 50 мен 70 реттелген, сондықтан қалады.
20,40,50,70,35
3-жүріс.75 пен 35 салыстырылады.
20,40,50,35,75
4-жүріс. 50 мен 35 салыстырылады
20,40,35,50,75
5-жүріс. 40 пен 35 салыстырылады
20,35,40,50,75
20 мен 30 реттелген
20,35,40,50,75 болып реттеледі.
Массивтегі жүрістер саны минимальды немесе максимальды элемент қай жерде орналасқанына байланысты. Мұнда бірінен кейін бірі келетін жүрістердің бағытын ауыстыру арқылы жылдамдатуға болады. Мұндай алгоритм Шейкер сұрыптауы деп аталады.
Есептеу күрделілігі. Массив реттелген болған жағдайда бүкіл тізім бойынша 1 ғана жүріс өтеді. Мұнда тиімділігі О(n)-ға тең. Ал ең тиімсіз жағдайда i-1 жүріс орындалады және i-ші жүрісте n-i-1 салыстыру жүргізіледі. Ең тиімсіз жағдайда тиімділігі О(n2) тең. Жалпы жағдайда таңдау арқылы сұрыптау көбікше арқылы сұрыптауға қарағанда ауыстырылатын сан аздығымен тиімді болады. Шейкер сұрыптау алгоритмі элементтердің барлығы немесе көпшілігі сұрыпталған жағдайда пайдаланған тиімді.
Тапсырмалар варианттары:
Енгізілетін мәліметтер (алғашқы массив) пен шығатын мәліметтерді (сұрыпталған массив) бүтін сандардан тұратын текстік файл ретінде қалыптастыру керек.
Өткен әдістерді есептерге қолданып көр:
1. Егер соңғы ауыстыру факты ғана емес оның орыны да белгілі болса, онда осы орыннан оңғы қарай орналасқан барлық көршілес элементтер жұптары керекті ретпен тұрғанын байқау қиын емес. Сондықтан, қарауды аяғына дейін жалғастырмай, осы индексте бітіруге болады.
2. Кему реті бойынша «көпіршік» сұрыптау процедурасын жазу керек.
3. Берілген қатардағы ең кіші элементтен үлкен екінші элементті табу керек.
