Сәлеметсіз бе! Бүгінгі дәріс басқалардан сәл өзгеше болмақ. Ол тек Java-мен жанама түрде байланысты болуымен ерекшеленеді. Дегенмен, бұл тақырып әрбір бағдарламашы үшін өте маңызды. Біз алгоритмдер туралы сөйлесетін боламыз . Алгоритм дегеніміз не? Қарапайым тілмен айтқанда, бұл қажетті нәтижеге жету үшін орындалуы керек әрекеттердің белгілі бір тізбегі . Біз күнделікті өмірде алгоритмдерді жиі қолданамыз. Мысалы, күнде таңертең сіздің алдыңызда тапсырма болады: мектепке немесе жұмысқа келу және сонымен бірге:
- Киінген
- Таза
- Жақсы тамақтанды
- Оятқыш сағатпен ояныңыз.
- Душ қабылдаңыз, бетіңізді жуыңыз.
- Таңғы ас дайындаңыз, кофе/шай қайнатыңыз.
- Тамақ.
- Егер сіз кешке дейін киіміңізді үтіктемеген болсаңыз, үтіктеңіз.
- Киіну.
- Үйден шығу.
- Интернетте «Орысша жеке есімдер сөздігі» 1966 жылғы басылымды сатып алыңыз немесе жүктеңіз.
- Осы сөздікте тізімдегі барлық атауларды табыңыз.
- Аты сөздіктің қай бетінде тұрғанын қағазға жазып алыңыз.
- Қағаздағы жазбаларды пайдаланып, атауларды ретімен қойыңыз.
for
Сіз бұл тапсырманы орындайтын тұрақты цикл жазасыз
int[] numbers = new int[100];
// ..заполняем массив числами
for (int i: numbers) {
System.out.println(i);
}
Жазбаша алгоритмнің күрделілігі қандай? Сызықтық, O(N). Бағдарлама орындауы тиіс әрекеттер саны оған қанша сан берілгеніне байланысты. Массивте 100 сан болса, 100 әрекет (экрандағы шығыс) болады.Егер массивте 10 000 сан болса, 10 000 әрекетті орындау қажет болады. Біздің алгоритмімізді жақсартуға бола ма? Жоқ. Кез келген жағдайда, біз массив арқылы N өтуін және консольге N шығуын орындауымыз керек . Басқа мысалды қарастырайық.
public static void main(String[] args) {
LinkedList<Integer> numbers = new LinkedList<>();
numbers.add(0, 20202);
numbers.add(0, 123);
numbers.add(0, 8283);
}
Бізде бос сан бар LinkedList
, оған біз бірнеше сандарды енгіземіз. LinkedList
Біздің мысалға бір санды енгізу алгоритмінің күрделілігін және оның тізімдегі элементтер санына қалай тәуелді екенін бағалауымыз керек . Жауап: O(1) - тұрақты күрделілік . Неліктен? Назар аударыңыз: әр кезде біз тізімнің басына нөмір енгіземіз. Сонымен қатар, есіңізде болса, сандарды элементтерге кірістіру кезінде олар ешқайда жылжытылмайды - сілтемелер қайта анықталады (егер сіз кенеттен LinkedList қалай жұмыс істейтінін ұмытып қалсаңыз, ескі дәрістеріміздіңLinkedList
біріне қараңыз ). Егер қазір тізімдегі бірінші сан сан болса және біз тізімнің басына у санын енгізсек, тек қажет: х
x.previous = y;
y.previous = null;
y.next = x;
Бұл анықтамалық қайта анықтау үшін біз үшін қазір қанша сан бар екені маңызды емесLinkedList
- кем дегенде бір, кем дегенде миллиард. Алгоритмнің күрделілігі тұрақты болады – O(1).
GO TO FULL VERSION