3-Laboratoriya ishi



Yüklə 72,05 Kb.
səhifə6/7
tarix25.12.2023
ölçüsü72,05 Kb.
#194586
1   2   3   4   5   6   7
3-Laboratoriya ishi

Ildizli saralash

Ildizlarni saralashda ro'yxat kalit qiymatlarni bir-biri bilan to'g'ridan-to'g'ri taqqoslamasdan buyurtma qilinadi. Bunday holda, "vayronalar" to'plami yaratiladi va elementlar kalitlarning qiymatlariga qarab staklarga taqsimlanadi. Keyingi qiymatlarni yig'ib, kalitning ketma-ket qismlari uchun butun protsedurani takrorlab, biz tartiblangan ro'yxatni olamiz. Ushbu protsedura ishlashi uchun stacking va keyingi montaj juda ehtiyotkorlik bilan bajarilishi kerak.


Shunga o'xshash tartib kartalarni qo'lda tartiblashda qo'llaniladi. Ba'zi kutubxonalarda, kompyuterdan oldingi paytlarda, kitobni chiqarishda, kartochka to'ldirilgan. Chiqarilgan kartalar raqamlangan va karta raqamiga qarab ularning yon tomonida bir qator chuqurchalar qilingan. Kitob qaytarib berilganda, ekstraditsiya kartasi o'chirildi va qoziqqa tashlandi. So'ngra butun chuqurchaga birinchi chuqurchalar joyida uzun igna nayzalangan va igna ko'tarilgan. O'chirilgan belgi bilan kartalar stolda qoldi, qolganlari ignaga mixlab qo'yildi. Keyin paydo bo'lgan ikkita qoziqlar qayta joylashtirildi, shunda ignalardagi kartalar teshiklari bo'lgan kartalarning orqasida qoldi. Keyin igna ikkinchi chuqurchaga yopishtirilgan va butun jarayon takrorlangan. Barcha pozitsiyalarni teshib chiqqandan so'ng, kartalar raqamlar ketma-ketligida paydo bo'ldi.
Qo'lda ishlov berishning ushbu protsedurasi kartochkalarni birinchi bosqichdagi raqamning ahamiyatsiz raqamining qiymatiga va oxiridagi eng yuqori raqamga qarab ajratadi.
package koren_sort;
import java.util.Arrays;
public class Koren_sort {
void countingSort(int array[], int size, int place) {
int[] output = new int[size + 1];
int max = array[0];
for (int i = 1; i < size; i++) {
if (array[i] > max)
max = array[i]; }
int[] count = new int[max + 1];
for (int i = 0; i < max; ++i)
count[i] = 0;
for (int i = 0; i < size; i++)
count[(array[i] / place) % 10]++;
for (int i = 1; i < 10; i++)
count[i] += count[i - 1];
for (int i = size - 1; i >= 0; i--) {
output[count[(array[i] / place) % 10] - 1] = array[i];
count[(array[i] / place) % 10]--; }
for (int i = 0; i < size; i++)
array[i] = output[i]; }
int getMax(int array[], int n) {
int max = array[0];
for (int i = 1; i < n; i++)
if (array[i] > max)
max = array[i];
return max; }
void radixSort(int array[], int size) {
int max = getMax(array, size);
for (int place = 1; max / place > 0; place *= 10)
countingSort(array, size, place); }
public static void main(String args[]) {
int[] data = { 121, 432, 564, 23, 1, 45, 788 };
int size = data.length;
Koren_sort rs = new Koren_sort ();
rs.radixSort(data, size);
System.out.println(Arrays.toString(data)); } }
310 213 023 130 013 301 222 032 201 111 323 002 330 102 231 120
Berilgan tizim Berilganlar
0 310 130 330 120
1 301 201 111 231
2 222 032 002 102
3 213 023 013 323
(а) Birinshi bosqish, birlik razryad
Birinchi bosqishdan olingan tizim

310 130 330 120 301 201 111 231 222 032 002 102 213 023 013 323


Berilgan tizim Berilganlar
0 301 201 002 102
1 310 111 213 013
2 120 222 023 323
3 130 330 231 032



Yüklə 72,05 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin