KomputerProgramming

Téhnik dina programming asihan: asihan "gelembung"

gelembung diurutkeun henteu ukur dianggap metodeu panggancangna, komo deui, éta nutup daftar tina cara slowest pikeun ngatur. Sanajan kitu, eta boga kaunggulan na. Ku kituna, métode asihan gelembung - paling anu ngayakeun mangrupakeun leyuran alam tur logis mun masalahna, upami anjeun hoyong ngatur item dina urutan husus. Hiji jalma biasa sacara manual, contona, éta bakal ngagunakeun éta - ngan ku intuisi.

Dimana tuh hiji ngaran misalna mahiwal?

Ngaran metoda sumping up, ngagunakeun analogi gelembung hawa dina caina. Ieu métafora mangrupa. Kawas gelembung saeutik tina naékna hawa ka luhur - sabab dénsitas maranéhanana nyaéta gede ti nu ti mana wae cair (dina hal ieu - caina), sarta masing-masing unsur Asép Sunandar Sunarya, nu leutik eta ngarupakeun nilai, jalan beuki bertahap ka luhur daptar nomer.

Pedaran algoritma nu

gelembung diurutkeun anu dipigawé saperti kieu:

  • mimitina lolos: unsur angka Asép Sunandar Sunarya dicokot ku dua pasang tur ogé dibandingkeun. Lamun sababaraha elemen ti nilai heula tim dua-lalaki geus gede ti nu kadua, program ngajadikeun éta tempat bursa;
  • akibatna, jumlah greatest misses tungtung Asép Sunandar Sunarya dina. Bari sakabeh elemen séjén tetep sakumaha maranéhanana éta, di luhur kacau, sarta merlukeun leuwih asihan;
  • sahingga merlukeun hiji lolos kadua: eta dijieun ku analogi jeung saméméhna (geus ditétélakeun) jeung boga sababaraha babandinganana - dikurangan salah;
  • di angka petikan tilu babandinganana, salah kirang ti kadua, jeung dua, ti heula. Jeung saterusna;
  • nyimpulkeun yen unggal petikan boga (sakabeh nilai dina Asép Sunandar Sunarya dina, jumlah nu tangtu) dikurangan (jumlah petikan) babandinganana.

Algoritma malah pondok tina program anu bisa ditulis salaku:

  • hiji Asép Sunandar Sunarya ti nomer anu dipariksa salami naon dua nomer anu kapanggih, anu kadua éta geus kabeungkeut janten gede ti kahiji;
  • leres diposisikan dina hubungan tiap elemen séjén anu swaps software Asép Sunandar Sunarya.

Pseudocode dumasar kana algoritma digambarkeun

Palaksanaan pangbasajanna dilumangsungkeun saperti kieu:

Prosedur Sortirovka_Puzirkom;

mimiti

siklus pikeun j ti nachalnii_index mun konechii_index;

siklus keur i ti nachalnii_index mun konechii_index-1;

lamun massiv [i]> massiv [i + 1] (unsur kahiji leuwih gede ti kadua), lajeng:

(Robah tempat nilai);

ahir

Tangtu, kesederhanaan ieu ngan aggravates kaayaan: nu basajan algoritma nu, beuki eta manifests sagala flaws. ratio investasi waktu teuing hébat malah pikeun Asép Sunandar Sunarya leutik (di dieu asalna di rélativitas: Jumlah waktu keur awam teh mungkin sigana leutik, tapi dina kanyataanana hiji programmer unggal diitung kadua atawa malah millisecond).

Butuh waktu palaksanaan hadé. Contona, nyokot kana akun bursa tina nilai di lokasi Asép Sunandar Sunarya:

Prosedur Sortirovka_Puzirkom;

mimiti

sortirovka = leres;

siklus dugi sortirovka = leres;

sortirovka = palsu;

siklus keur i ti nachalnii_index mun konechii_index-1;

lamun massiv [i]> massiv [i + 1] (unsur kahiji leuwih gede ti kadua), lajeng:

(Robah elemen tempat);

sortirovka = leres; (Dicirikeun nu bursa nu geus dilakukeun).

Tungtung.

watesan

Nu disadvantage utama - durasi prosés. Sabaraha waktos anu dipigawé asihan algoritma gelembung?

waktos kalungguhan diitung ti Jumlah nomer pasagi di Asép Sunandar Sunarya dina - hasil ahir éta sabanding.

Lamun kasus awon Asép Sunandar Sunarya dina disalurkeun saloba kali sakumaha eta boga elemen dikurangan hiji nilai. Ieu kajadian kusabab di tungtungna aya ngan hiji unsur, nu nganggur pikeun ngabandingkeun, jeung lolos panungtungan ngaliwatan Asép Sunandar Sunarya janten Peta gunana.

Sajaba ti éta, métode efektip asihan hiji bursa basajan, saperti mangka disebut, ngan keur arrays tina ukuranana leutik. jumlahna ageung data kalayan bantuan prosés iyeu moal jalan mun: hasilna bakal boh kasalahan atawa kagagalan program.

darajad

gelembung diurutkeun pisan gampang ngartos. The curricula sahiji universitas teknis dina ulikan ngeunaan elemen nyusun Asép Sunandar Sunarya na lulus dina tempat munggaran. métode anu gampang pikeun nerapkeun duanana bahasa Delphi programming (L (Delphi), jeung C / C ++ (C / C tambah tambah), hiji nilai incredibly basajan tina algoritma lokasi dina urutan ka katuhu jeung dina Pascal (Pascal). gelembung diurutkeun mangrupa idéal pikeun beginners.

Alatan éta drawbacks tina algoritma henteu dipaké dina tujuan ekstrakurikuler.

Prinsip asihan Visual

Mimiti pintonan ti Asép Sunandar Sunarya 8 22 4 74 44 37 1 7

Hambalan 8 22 4 1 74 44 37 1 7

8 22 4 74 44 1 37 7

8 22 4 74 1 44 37 7

8 22 4 1 74 44 37 7

8 22 1 4 74 44 37 7

8 1 22 4 74 44 37 7

1 8 22 4 74 44 37 7

Hambalan 1 8 22 2 4 74 44 7 37

1 8 22 4 74 7 44 37

1 8 22 4 7 74 44 37

1 8 22 4 7 74 44 37

1 8 4 22 7 74 44 37

1 4 8 22 7 74 44 37

Hambalan 1 4 8 3 22 7 74 37 44

1 4 8 22 7 37 74 44

1 4 8 22 7 37 74 44

1 4 8 7 22 37 74 44

1 4 7 8 22 37 74 44

Hambalan 1 4 7 4 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Hambalan 1 4 7 5 8 22 37 44 74

1 4 7 8 22 37 44 74

1 4 7 8 22 37 44 74

Hambalan 1 4 7 6 8 22 37 44 74

1 4 7 8 22 37 44 74

Hambalan 1 4 7 7 8 22 37 44 74

gelembung diurutkeun conto di Pascal

contona:

kol_mas const = 10;

var massiv: Asép Sunandar Sunarya [1..kol_mas] of integer;

a, b, k: integer;

ngamimitian

writeln ( 'asupan', kol_mas, 'unsur Asép Sunandar Sunarya');

pikeun: = 1 keur kol_mas do readln (massiv [a ]);

pikeun: = 1 keur kol_mas-1 ngalakukeun dimimitian

pikeun b: = a + 1 nepi ka kol_mas ulah dimimitian

lamun massiv [a]> massiv [ b] lajeng ngawitan

k: = massiv [a]; massiv [a]: = massiv [ b]; massiv [b]: = k;

mungkas;

mungkas;

mungkas;

writeln ( 'sanggeus diurutkeun');

pikeun: = 1 keur kol_mas do writeln (massiv [a ]);

tungtung.

Conto gelembung asihan dina basa C (C)

contona:

#include

#include

int utama (int argc, char * argv [])

{

int massiv [8] = {36, 697, 73, 82, 68, 12, 183, 88}, i, ff;

pikeun (;;) {

ff = 0;

pikeun (i = 7; i> 0; i -) {

lamun (massiv [i] [i- 1]) {

swap (massiv [i], massiv [i- 1]);

ff ++;

}

}

lamun (ff == 0) megatkeun;

}

getch (); // tampilan reureuh

balik 0;

}.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 su.birmiss.com. Theme powered by WordPress.