Hello! Kuliah dina iki bakal rada beda karo liyane. Bakal beda-beda amarga mung ora langsung ana hubungane karo Jawa. Nanging, topik iki penting banget kanggo saben programmer. Kita bakal ngomong babagan algoritma . Apa algoritma? Ing istilah sing prasaja, iki minangka urutan tumindak tartamtu sing kudu ditindakake kanggo entuk asil sing dikarepake . Kita asring nggunakake algoritma ing saben dinten. Contone, saben esuk sampeyan ngadhepi tugas: teka sekolah utawa kerja, lan ing wektu sing padha:
- Busana
- resik
- Apik-apik
- Tangi karo jam weker.
- Adus, cuci muka.
- Siapke sarapan, gawe kopi/teh.
- mangan.
- Yen sampeyan durung nyetrika sandhangan wiwit sore, setrika.
- Klamben.
- Ninggalake omah.
- Tuku utawa download ing Internet "Kamus Jeneng Pribadi Rusia" edisi 1966.
- Temokake saben jeneng ing dhaptar kita ing kamus iki.
- Tulis ing kertas sing ana ing kaca kamus sing jenenge.
- Sijine jeneng kanthi urutan nggunakake cathetan ing kertas.
for
sing nindakake tugas iki
int[] numbers = new int[100];
// ..заполняем массив числами
for (int i: numbers) {
System.out.println(i);
}
Apa kerumitan algoritma sing ditulis? Linear, O(N). Jumlah tumindak sing kudu ditindakake dening program kasebut gumantung saka jumlah nomer kasebut. Yen ana 100 nomer ing larik, bakal ana 100 tumindak (output ing layar) Yen ana 10.000 nomer ing larik, 10.000 tumindak kudu ditindakake. Apa algoritma kita bisa ditingkatake? Ora. Ing kasus apa wae, kita kudu nggawe N liwat array lan nindakake N output menyang console. Ayo goleki conto liyane.
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(0, 20202);
numbers.add(0, 123);
numbers.add(0, 8283);
}
Kita duwe siji kosong LinkedList
sing dilebokake sawetara nomer. Kita kudu ngira kerumitan algoritma kanggo nglebokake nomer siji menyang LinkedList
conto, lan carane gumantung saka jumlah unsur ing dhaptar. Jawaban iki O(1) - kerumitan konstan . Kenging punapa? Wigati dicathet: saben kita nglebokake nomer ing wiwitan dhaptar. Kajaba iku, nalika sampeyan ngelingi, nalika nglebokake angka menyang LinkedList
unsur, dheweke ora dipindhah menyang endi wae - pranala didefinisikan maneh (yen sampeyan tiba-tiba lali cara kerja LinkedList, deleng salah sawijining ceramah lawas ). Yen saiki nomer pisanan ing dhaptar kita yaiku nomer х
, lan kita masang nomer y ing wiwitan dhaptar, kabeh sing dibutuhake yaiku:
x.previous = y;
y.previous = null;
y.next = x;
Kanggo redefinisi referensi iki, ora dadi masalah kanggo kita pira nomer saikiLinkedList
- paling ora siji, paling ora milyar. Kompleksitas algoritma bakal tetep - O(1).
GO TO FULL VERSION