Hi! Pawulangan dina iki bakal rada beda karo liyane. Bakal beda-beda amarga mung ora langsung ana hubungane karo Jawa. Yen ngandika, topik iki penting banget kanggo saben programmer. Kita bakal ngomong babagan algoritma . Apa algoritma? Ing istilah prasaja, iku sawetara urutan tumindak sing kudu rampung kanggo entuk asil sing dikarepake . Kita asring nggunakake algoritma ing saben dinten. Contone, saben esuk sampeyan duwe tugas tartamtu: menyang sekolah utawa kerja, lan ing wektu sing padha:
- Sandhangan
- resik
- dipakani
- Tangi nganggo jam weker.
- Adus lan adus.
- Nggawe sarapan lan sawetara kopi utawa teh.
- mangan.
- Yen sampeyan ora nyetrika sandhangan ing wayah sore, banjur disetrika.
- Klamben.
- Ninggalake omah.
- Tuku utawa download edisi 1961 saka Webster's Third New International Dictionary.
- Temokake saben jeneng saka dhaptar kita ing kamus iki.
- Ing kertas, tulisake kaca kamus sing jenenge.
- Gunakake potongan kertas kanggo ngurutake jeneng.
for
sing nindakake tugas iki
int[] numbers = new int[100];
// ...fill the array with numbers
for (int i: numbers) {
System.out.println(i);
}
Apa kerumitan algoritma iki? Linear, yaiku O(n). Jumlah tumindak sing kudu ditindakake program kasebut gumantung saka jumlah nomer sing diterusake. Yen ana 100 nomer ing array, bakal ana 100 tumindak (statements kanggo nampilake strings ing layar). Yen ana 10.000 nomer ing larik, banjur 10.000 tumindak kudu ditindakake. Apa algoritma kita bisa ditingkatake kanthi cara apa wae? Ora ana prakara apa, kita kudu nggawe N liwat Uploaded lan nglakokaké N statements kanggo tampilan strings ing console. Coba 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);
}
We duwe kosong LinkedList
menyang kang kita masang sawetara nomer. Kita kudu ngevaluasi kerumitan algoritma kanggo nglebokake nomer siji ing LinkedList
conto kita, lan carane gumantung saka jumlah unsur ing dhaptar. Jawabane yaiku O(1), yaiku kompleksitas konstan . Kenging punapa? Elinga yen kita masang saben nomer ing awal dhaftar. Kajaba iku, sampeyan bakal kelingan yen sampeyan masang nomer menyang a LinkedList
, unsur ora pindhah ngendi wae. Link (utawa referensi) dianyari (yen sampeyan kelalen cara kerja LinkedList, deleng salah sawijining pelajaran lawas ). Yen nomer pisanan ing dhaftar kita x
, lan kita masang nomer y ing ngarep dhaftar, banjur kabeh kita kudu nindakake iki:
x.previous = y;
y.previous = null;
y.next = x;
Nalika kita nganyari pranala, kita ora Care carane akeh nomer wis ingLinkedList
, apa siji utawa siji milyar. Kompleksitas algoritma punika pancet, yaiku O(1).
GO TO FULL VERSION