NEW
Font size
WorksheetsPracticum exam
Total questions: 38
Worksheet time: 29mins
Бинарлы іздеу ағашына жаңа түйінді қосу үшін не істеу керек?
a) Түйіндерді сұрыптау
b) Жаңа түйінді сәйкес орынды тауып қосу
c) Барлық түйіндерді жою
d) Жаңа түйінді түбір ретінде сақтау
Келесі код не істейді?
Node* search(Node* root, int key) {
if (root == nullptr || root->data == key) return root;
if (key < root->data) return search(root->left, key);
return search(root->right, key);
}
a) Ағашты сұрыптайды
b) Бинарлы іздеу ағашында элементті іздейді
c) Ағашты жояды
d) Барлық түйіндерді шығарады
Келесі код ең кіші элементті таба ма?
int findMin(Node* root) {
while (root->left != nullptr) {
root = root->left;
}
return root->data;
}
a) Иә, сол жақтағы ең кіші элементті табады
b) Иә, бірақ тек түбір түйінді тексереді
c) Жоқ, тек оң жақты тексереді
d) Компиляция қатесі
Бинарлы іздеу ағашындағы ең үлкен элемент қай жерде орналасады?
a) Сол жақ түйінде
b) Түбір түйінде
c) Оң жақтағы соңғы түйінде
d) Барлық түйіндерде болуы мүмкін
Ағаштың биіктігін есептеу үшін қандай әдіс қолданылады?
a) Линейлік іздеу
b) Рекурсия
c) Итеративті әдіс
d) Стек қолдану
Келесі код не істейді?
int height(Node* root) {
if (root == nullptr) return 0;
return 1 + max(height(root->left), height(root->right));
}
a) Ағаштың элементтер санын есептейді
b) Ағаштың биіктігін есептейді
c) Тек түбір түйіннің биіктігін есептейді
d) Ағашты жояды
Сызықтық бірбағытты тізімде элементті жоюдың негізгі қадамдары қандай?
a) Барлық түйіндерді NULL-ге теңестіру
b) Түйінді тауып, алдыңғы түйіннің next көрсеткішін жаңарту
c) Барлық түйіндерді қайта құру
d) Жадыны динамикалық түрде қайта бөлу
Төмендегі код не істейді?void dHead(Node*& head) {
if (head == nullptr) return;
Node* temp = head;
head = head->next;
delete temp;
}
a) Тізімнің соңғы элементін жояды
b) Тізімнің бірінші элементін жояды
c) Тізімге элемент қосады
d) Компиляция қатесі болады
Тізімнің ортасындағы элементті табу үшін қандай әдіс қолданылады?
a) Тізімді екі рет өту
b) slow және fast көрсеткіштерін қолдану
c) Рекурсия
d) Барлық элементтерді салыстыру
Төмендегі функция не істейді?
void rList(Node*& head) {
Node* prev = nullptr;
Node* curr = head;
Node* next = nullptr;
while (curr != nullptr) {
next = curr->next;
curr->next = prev;
prev = curr;
curr = next;
}
head = prev;
}
a) Тізімнің барлық элементтерін жояды
b) Тізімді кері айналдырады
c) Тізімнің ортасындағы элементті табады
d) Тізімнің ұзындығын есептейді
Бірбағытты тізімді сұрыптаудың тиімді алгоритмі қайсы?
a) Көпіршікті сұрыптау
b) Кірістіру сұрыптауы
c) Жылдам сұрыптау
d) Тізімде сұрыптау мүмкін емес
Қос бағытты тізімде түйінді жою үшін қандай қосымша көрсеткіш жаңартылады?
a) Тек next көрсеткіші
b) Тек prev көрсеткіші
c) Екеуі де: next және prev
d) Түйіннің мәні ғана жаңартылады
Төмендегі код не істейді?
void iAfter(Node* prevNode, int value) {
if (prevNode == nullptr) return;
Node* newNode = new Node{value, prevNode->next, prevNode};
if (prevNode->next != nullptr) prevNode->next->prev = newNode;
prevNode->next = newNode;
}
a) Тізімнің басына элемент қосады
b) Белгілі бір түйіннен кейін элемент қосады
c) Тізімді кері айналдырады
d) Тізімнің соңындағы элементті жояды
Қос бағытты тізімнің соңғы элементінде қандай көрсеткіш NULL мәнін сақтайды?
a) prev
b) next
c) head
d) tail
Қос бағытты тізімді кері бағытта қалай өтуге болады?
a) head көрсеткішін қолдану
b) tail көрсеткішінен бастап prev арқылы жүру
c) Барлық түйіндерді NULL-ге жаңарту
d) Тізімді қайта құру
Қос бағытты тізімде элемент іздеу үшін қандай әдіс тиімді?
a) Тізімді екі бағытта бірдей тексеру
b) Жылдам сұрыптау
c) Тек соңғы элементті тексеру
d) Массивке көшіру
Стекке жаңа элемент қосу қалай аталады?
a) push
b) pop
c) enqueue
d) insert
Дек құрылымында элементтер қай жерден қосылады және жойылады?
a) Тек соңынан
b) Тек басынан
c) Басынан да, соңынан да
d) Кез келген жерден
Төмендегі код не істейді?
queue<int> q;
q.push(10);
q.push(20);
q.pop();
cout << q.front();
a) 10 санын шығарады
b) 20 санын шығарады
c) Стектің соңғы элементін шығарады
d) Компиляция қатесі
Дектің артықшылығы қандай?
a) Жадыны аз қолданады
b) Элементтерді екі жағынан қосуға және жоюға болады
c) Тек бір жағынан басқару мүмкіндігі
d) Барлық элементтерді сұрыптайды
Қай сұрыптау әдісі салыстырусыз жұмыс істейді?
a) Пузырьлік сұрыптау
b) Сұрыптау таңдау арқылы
c) Шелек (Bucket Sort) әдісі
d) Кірістіру сұрыптауы
Төмендегі код қай сұрыптау әдісін жүзеге асырады?
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
a) Көпіршікті сұрыптау
b) Кірістіру сұрыптауы
c) Жылдам сұрыптау
d) Сұрыптау таңдау арқылы
Төмендегі код фрагменті қандай нәтижеге алып келеді?
int arr[] = {5, 3, 8, 4, 2};
sort(arr, arr + 5);
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
a) 5 3 8 4 2
b) 2 3 4 5 8
c) 8 5 4 3 2
d) Қате шығарады
Көпіршікті сұрыптау әдісінің артықшылығы қандай?
a) Ең тиімді алгоритм
b) Кішкентай массивтер үшін қарапайым және оңай
c) Оңай жады бөлуді жүзеге асырады
d) Көп ресурсты қажет етпейді
Сұрыптау Шелл әдісінің негізгі идеясы қандай?
a) Элементтерді бірнеше аралық интервалдар арқылы салыстырады
b) Элементтерді сұрыптау кезінде массивті бөледі
c) Тек кішігірім массивтерді сұрыптайды
d) Қайта-қайта бірдей элементтерді тексереді
Келесі код не істейді?
void sSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) min_idx = j;
}
swap(arr[min_idx], arr[i]);
}
}
a) Пузырьлік сұрыптауды орындайды
b) Сұрыптау таңдау арқылы орындайды
c) Жылдам сұрыптауды орындайды
d) Кірістіру сұрыптауын орындайды
Жылдам сұрыптауда (Quick Sort) pivot элементі қалай таңдалады?
a) Ең үлкен элемент
b) Массивтің ортасындағы элемент
c) Кездейсоқ таңдалған элемент
d) Барлық элементтердің қосындысы
Сұрыптау әдістерінің қайсысы тұрақты болып саналады?
a) Көпіршікті сұрыптау
b) Жылдам сұрыптау
c) Сұрыптау таңдау арқылы
d) Сұрыптау Шелл әдісі
Төмендегі код не істейді?
void bSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) swap(arr[j], arr[j + 1]);
}
}
}
a) Элементтерді сұрыптап, ең кіші элементті шығарады
b) Көпіршікті сұрыптауды орындайды
c) Жылдам сұрыптауды орындайды
d) Массивтің ұзындығын есептейді
Сызықтық іздеу алгоритмінде элемент қалай табылады?
a) Массив сұрыпталады, содан кейін ізделеді
b) Әр элемент ретімен тексеріледі
c) Тек бірінші элемент тексеріледі
d) Тек соңғы элемент тексеріледі
Бинарлық іздеуді қолдану үшін қандай шарт орындалуы керек?
a) Массив сұрыпталмаған болуы керек
b) Массивтің өлшемі жұп болуы керек
c) Массив сұрыпталған болуы керек
d) Тек оң мәндер болуы керек
Төмендегі функция не істейді?
int lSearch(int arr[], int n, int key) {
for (int i = 0; i < n; i++) {
if (arr[i] == key) return i;
}
return -1;
}
a) Бинарлық іздеуді жүзеге асырады
b) Сызықтық іздеуді жүзеге асырады
c) Массивті сұрыптайды
d) Компиляция қатесі тудырады
Келесі код қандай іздеу әдісін орындайды?int bSearch(int arr[], int left, int right, int key) {
while (left <= right) {
int mid = left + (right - left) / 2;
if (arr[mid] == key) return mid;
else if (arr[mid] < key) left = mid + 1;
else right = mid - 1;
}
return -1;
}
a) Сызыөтық іздеу
b) Интерполяциялық іздеу
c) Бинарлық іздеу
d) Жаппай іздеу
Сызықтық іздеу қай жағдайда тиімсіз?
a) Кіші массивтер үшін
b) Сұрыпталған массивтер үшін
c) Ірі көлемді деректер үшін
d) Стек құрылымы үшін
Интерполяциялық іздеу қай массивтер үшін тиімді?
a) Сұрыпталмаған массивтер
b) Кездейсоқ мәндер бар массивтер
c) Тұрақты түрде бөлінген мәндері бар массивтер
d) Шағын көлемді массивтер
Төмендегі функция интерполяциялық іздеудің қандай бөлігін жүзеге асырады?
int pos = low + ((key - arr[low]) * (high - low)) / (arr[high] - arr[low]);
a) Ортаңғы элементті табу
b) Бинарлық іздеу операциясы
c) Элементтің шамамен орнын болжау
d) Массивті сұрыптау
Егер бинарлық іздеуде элемент табылмаса, қандай мән қайтарылады?
a) 0
b) NULL
c) -1
d) Массивтің соңғы индексі
Сызықтық іздеу қандай деректер құрылымында жиі қолданылады?
a) Сұрыпталған массивтер
b) Қос бағытты тізімдер
c) Сұрыпталмаған массивтер
d) Бинарлы іздеу ағашы
