Mullide sortimise algoritm C-s, Javas ja Pythonis

Viimane uuendus: 30 de noviembre de 2025
  • Lihtne ja stabiilne algoritm, mis sorteerib külgnevate elementide võrdlemise ja vahetamise teel, ideaalne põhitõdede õppimiseks.
  • Selle keerukus on O(n^2), seega on see suurte hulkude puhul ebaefektiivne ja teostab palju ebavajalikke võrdlusi.
  • Selle rakendamist C-s, Javas ja Pythonis näidati; suuremate andmekogumite jaoks on olemas tõhusamad alternatiivid, näiteks kiirsort ja ühendamine.
Mullide sortimise algoritm

Mullide sortimise algoritm on üks lihtsamaid ja elementaarsemaid algoritme, mida kasutatakse loendi elementide sortimiseks. Selle lihtsus muudab selle suurepäraseks valikuks sortimisalgoritmide põhikontseptsioonide mõistmiseks. Seda algoritmi kasutatakse tavaliselt rakendustes ja programmides, kus sorteeritavate elementide arv on väike.

Selles artiklis keskendume mullsortimise algoritmi rakendamisele kahes populaarses programmeerimiskeeles: C ja Java. Uurime samme, mis on vajalikud selle algoritmi rakendamiseks mõlemas keeles, analüüsides lähtekoodi ja pakkudes üksikasjalikke selgitusi.

Mullide sortimise algoritm C-s ja Javas

Mullide sortimise algoritm, nagu nimigi ütleb, töötab loendis kõrvuti asetsevate elementide paaride võrdlemisel ja vahetuste tegemisel, kui need on vales järjekorras. Seda protsessi korratakse, kuni loend on täielikult sorteeritud.

Kuidas töötab mullide sortimise algoritm C-s ja Javas?

Mullide sortimise algoritm järgib elementide sortimisel lihtsat, kuid tõhusat lähenemist. Algoritmi üldine toimimine on näidatud allpool:

  1. Alustame järjestamata kaupade loendiga.
  2. Kordame loendit, võrreldes iga külgnevate elementide paari.
  3. Kui elemendid on vales järjekorras, vahetame need ära.
  4. Jätkame loendi itereerimist, kuni see on täielikult sorteeritud.
  5. Iteratsiooniprotsessi korratakse nii mitu korda kui vaja, kuni täieliku käigu jooksul enam vahetusi ei tehta.

Mullide sortimise algoritmi rakendamine C-s

Allpool esitame mullide sortimise algoritmi implementatsiooni C-keeles :

#include <stdio.h>

void bubbleSort(int array[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (array[j] > array[j + 1]) {
                int temp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = temp;
            }
        }
    }
}

int main() {
    int array[] = {64, 34, 25, 12, 22, 11, 90};
    int size = sizeof(array) / sizeof(array[0]);
    bubbleSort(array, size);
    printf("Array ordenado: ");
    for (int i = 0; i < size; i++) {
        printf("%d ", array[i]);
    }
    return 0;
}

Selles mullialgoritmi koodis oleme määratlenud funktsiooni nimega bubbleSort mis võtab parameetritena massiivi ja selle suuruse. Funktsioon täidab mullide sortimise algoritmi kahe tsükli abil for. Esimene silmus for kordab üle massiivi elementide ja teise tsükli for teha vajalikke võrdlusi ja vahetusi.

  Kvantalgoritmid: andmetöötluse tuleviku uurimine

Lõpuks funktsioonis main, oleme loonud näidismassiivi ja arvutanud selle suuruse. Seejärel kutsume funktsiooni bubbleSort massiivi ja selle suuruse edastamine argumentidena. Lõpuks prindime sorteeritud massiivi ekraanile.

Mullide sortimise algoritmi rakendamine Javas

Allpool tutvustame mullide sortimise algoritmi rakendamist Java keeles:

import java.util.Arrays;

public class BubbleSort {
    public static void bubbleSort(int[] array) {
        int size = array.length;
        for (int i = 0; i < size - 1; i++) {
            for (int j = 0; j < size - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {64, 34, 25, 12, 22, 11, 90};
        bubbleSort(array);
        System.out.println("Array ordenado: " + Arrays.toString(array));
    }
}

Selles koodis oleme määratlenud klassi nimega BubbleSort. Selle klassi sees oleme deklareerinud staatilise meetodi nimega bubbleSort mis võtab parameetrina massiivi. Meetod bubbleSort täidab mullide sortimise algoritmi, kasutades kahte tsüklit for, täpselt nagu C-rakenduses.

Meetodis main, oleme loonud näitemassiivi ja nimetanud meetodi bubbleSort massiivi argumendina edastamine. Lõpuks kasutame Arrays.toString(array) sorteeritud massiivi printimiseks konsooli.

Mullide sortimise algoritmi rakendamine Pythonis

Pythoni mullide sortimisalgoritmi ekvivalent:

def bubble_sort(array):
    size = len(array)
    for i in range(size - 1):
        for j in range(size - i - 1):
            if array[j] > array[j + 1]:
                array[j], array[j + 1] = array[j + 1], array[j]

array = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(array)
print("Array ordenado:", array)


 

Mullide sortimise algoritmi eelised

Mullide sortimise algoritmil on mõned eelised, näiteks:

  1. Lihtsus: mullide sortimise algoritmi on lihtne mõista ja rakendada. See ei nõua keerulisi teadmisi ja sobib programmeerimisega algajatele.
  2. Madal koodi keerukus: mullide sortimise algoritmi rakendamiseks vajalik kood on suhteliselt lühike ja sisutihe. See muudab selle kiireks valikuks väikese hulga üksuste sorteerimiseks.

Mullide sortimise algoritmi puudused

Vaatamata oma lihtsusele on mullide sortimise algoritmil ka mõned puudused:

  1. Ebaefektiivsus suurtes andmekogumites: mullide sortimise algoritm ei ole suurte andmehulkade puhul täitmise aja osas tõhus. Selle ajaline keerukus on O(n^2), mis tähendab, et andmestiku suuruse kasvades pikeneb täitmisaeg kiiresti.
  2. Võrdluste arv: mulli sortimise algoritm teostab suure hulga võrdlusi isegi siis, kui massiiv on juba sorteeritud. See võib kaasa tuua tarbetu jõudluse ja ressursside kadumise.
  Kvantitatiivsete algoritmide näited: praktilised rakendused ja juhtumiuuringud

Alternatiivid mullide sortimise algoritmile

Kuna andmekogumid muutuvad suuremaks ja keerukamaks, on oluline kaaluda mullide sortimise algoritmi tõhusamaid alternatiive. Mõned populaarsed alternatiivid hõlmavad järgmist:

  1. Sisestuse sortimise algoritm: see algoritm jagab loendi järjestatud osaks ja järjestamata osaks ning lisab järjestamata osa iga elemendi järjestatud osas õigesse kohta. Selle ajaline keerukus on halvimal juhul O(n^2), kuid enamikul juhtudel on see tõhusam kui mulli sortimise algoritm.
  2. Valiku sortimise algoritm: See algoritm jagab loendi järjestatud osaks ja järjestamata osaks ning valib järjestamata osast korduvalt väikseima elemendi ja asetab selle järjestatud osa lõppu. Selle ajaline keerukus on halvimal juhul O(n^2), kuid enamikul juhtudel on see ka tõhusam kui mulli sortimise algoritm.

Mullialgoritmi KKK

1. Mis on mullide sortimise algoritmi ajaline keerukus?

Mullide sortimise algoritmi ajaline keerukus on O(n^2), kus “n” on sortitavate elementide arv. See tähendab, et loendi suuruse kasvades pikeneb algoritmi tööaeg ruutkeskmiselt.

2. Millal on otstarbekas kasutada mullide sortimise algoritmi?

Mullide sortimise algoritm sobib siis, kui sorteeritavate elementide loend on väike. Ajalise keerukuse tõttu ei soovitata seda kasutada suurte andmehulkade puhul, kuna saadaval on tõhusamad algoritmid.

3. Kas mullide sortimise algoritm on stabiilne?

Jah, mullide sortimisalgoritm on stabiilne sortimisalgoritm. See tähendab, et see säilitab sortimise ajal võrdsete võtmetega elementide suhtelise järjekorra.

4. Mis on mullide sortimisalgoritmi parim alternatiiv?

Mullsortimise algoritmi parima alternatiivi valik sõltub kontekstist ja probleemi konkreetsetest nõuetest. Siiski on mõned tõhusamad algoritmid, näiteks kiirsortimine ja ühendamine , laialdaselt kasutusel nende madalama ajalise keerukuse tõttu.

  Shelli sortimise meetod C-s ja Javas: täielik juhend

5. Kas mullide sortimise algoritmi saab parandada?

Jah, mullide sortimise algoritmil on variante ja optimeerimisi, näiteks "kahesuunaline mullide sortimine" ja "täiustatud mullide sortimine". Need optimeerimised vähendavad loendi sortimiseks vajalike võrdluste ja iteratsioonide arvu.

6. Kust ma leian sorteerimisalgoritmide kohta lisateavet?

Lisateavet sortimisalgoritmide kohta leiate usaldusväärsetest allikatest, näiteks Wikipediast. Siin on mõned kasulikud lingid:

Järeldus

Selles artiklis oleme uurinud C- ja Java programmeerimiskeelte mullide sortimise algoritmi. Oleme õppinud samm-sammult, kuidas see algoritm töötab, ja oleme näinud selle praktilist rakendamist mõlemas keeles. Oleme arutanud ka mullide sortimise algoritmi eeliseid ja puudusi ning uurinud tõhusamaid alternatiive.

Kuigi mullide sortimise algoritm on lihtne ja hõlpsasti rakendatav, on oluline kaaluda selle tõhusust suuremate andmekogumite puhul. Sellistel juhtudel on soovitatav kaaluda tõhusamate sortimisalgoritmide kasutamist, näiteks sisestussortimist või valiku sorteerimist.

Loodame, et see artikkel on andnud teile põhjaliku ülevaate mulli sortimise algoritmist.