Eng yaxshi vaqt murakkabligi: O(1)
2. Insertion (qo'shish)
Talabga ko'ra massivga bir yoki bir nechta elementlarni kiritishimiz mumkin, albatta, elementni massivning boshiga yoki massivning oxiriga qo'shishimiz mumkin .
Biz element qo'shilishi kerak bo'lgan indeksni (pozitsiyani) berib, massivning istalgan joyiga element qo'shishimiz mumkin.
Aytaylik , biz oltita stol hosil qilish uchun qo'shimcha stol qo'yishimiz kerak edi, lekin hozir bizda 5 ta bor va mijozning xohishiga ko'ra biz stolni 2- stol, 3 -stol o'rtasida joylashtirishimiz kerak va stolni u erga joylashtirishimiz kerak. 3- jadval va 3-dan keyin qolganlari.
Iltimos, bu rasmni tasavvur qilmaguningizcha va jadvallarni almashtirishni tasavvur qilmaguningizcha oldinga siljmang, qayta o'qing, tushuning. Bizda 6 ta jadval bo'lganligi sababli, biz noOfDrinks massivimizni kengaytirishimiz va elementni (buyurtmalarni) kiritishimiz kerak.
#include
int main() {
int tables[] = {1,2,3,4,5};
int noOfDrinks[] = {5,2,3,5,7};
int n=5; //array size
int pos=2; //index of element to be added
int item = 4; //element to be added
n= n+1; //incrementing the size of the array by 1
int j=n-2; //adjusting the value of loop counter to the last index
while (j>=pos){ //traversing noOfDrinks[] from last
noOfDrinks[j+1] = noOfDrinks[j]; //copying the element to the incremented block
j=j-1;
}
noOfDrinks[pos] = item ; //copying the element to the vacated position
printf("Tables "Number of orders for drinks after adding a table :\n\n");
for(int i=0; iprintf(" %d \t %d \n", i+1, noOfDrinks[i]);
}}
Biz siz kuzatganingizdek jadvallarni o'zgartirishning xuddi shunday yondashuvini qo'lladik, elementlarni 2 pozitsiyadan keyin siljitdik, chunki biz elementni 2- pozitsiyaga kiritishimiz kerak edi:
Birinchi qadam, biz yangi elementni sozlash uchun massiv hajmini oshiramiz
Biz halqa hisoblagichi 'j' qiymatini sozlaymiz, shuning uchun biz tsiklni oxirgi elementdan boshlaymiz va keyin pastki indekslarga o'tamiz.
Keyin shart bilan while tsiklini qo'yamiz, j esa pos dan katta yoki teng bo'lsa, tsikl bajarilishi kerak.
Loopni kuzating, oxirgi element (5-chi) yangi pozitsiyaga ( 6-chi ; hozir oxirgi), xuddi shunday, 4- dan 5 -gacha va hokazo, keyin biz yangi elementni kerakli joyga ko'chirdik va uni ko'rsatamiz.
Ushbu koddan nusxa oling, uni kompilyatorga joylashtiring, natijani tushuning, kodni o'qing, qo'shilgan elementlar va o'zgartirilgan elementlarning xom oqimini chizing, ushbu o'zgaruvchilardan (i, j, n, a) foydalanishga harakat qiling. sizning oqimingizda. Menga ishoning, yuqoridagi parchadagi elementlar oqimining aniqligi ushbu maqolaning qolgan qismi siz uchun qanchalik oson bo'lishiga to'g'ridan-to'g'ri proportsionaldir.
Qo'shishning vaqt murakkabligi o'tish bilan bir xil bo'ladi. Element boshlang'ich indeksga, oxirgi indeksga yoki massivning o'rtasiga qo'shilishi mumkin . Elementni massivning o‘rtasiga yoki boshiga qo‘shish o‘rtacha va eng yomon vaqt murakkabligiga ega bo‘ladi, chunki qo‘shilgan elementdan so‘ng har bir element o‘z o‘rnini birga o‘zgartiradi, lekin element massiv oxiriga qo‘shilganda, faqat bir qadam kerak bo‘ladi. eng yaxshi vaqt murakkabligi.
Do'stlaringiz bilan baham: |