Matrika je definirana kot zbirka podobnih podatkovnih postavk, shranjenih na sosednjih pomnilniških lokacijah. Nizi so izpeljani tipi podatkov v programskem jeziku C, ki lahko shranijo primitivne vrste podatkov, kot so int, char, double, float itd. Imajo tudi zmožnost shranjevanja zbirke izpeljanih tipov podatkov, kot so kazalci, struktura, itd. Matrika je najpreprostejša podatkovna struktura, kjer je do vsakega podatkovnega elementa mogoče naključno dostopati z uporabo njegove indeksne številke.
Niz C je koristen, če morate shraniti podobne elemente. Na primer, če želimo shraniti ocene študenta pri 6 predmetih, potem nam ni treba definirati različnih spremenljivk za ocene pri različnih predmetih. Namesto tega lahko definiramo matriko, ki lahko shrani oznake v vsakem subjektu na sosednjih pomnilniških lokacijah.
Z uporabo matrike lahko enostavno dostopamo do elementov. Za dostop do elementov matrike je potrebnih le nekaj vrstic kode.
Lastnosti matrike
Matrika vsebuje naslednje lastnosti.
- Vsak element matrike je iste vrste podatkov in ima enako velikost, tj. int = 4 bajte.
- Elementi matrike so shranjeni na sosednjih pomnilniških lokacijah, kjer je prvi element shranjen na najmanjši pomnilniški lokaciji.
- Do elementov matrike lahko dostopamo naključno, saj lahko izračunamo naslov vsakega elementa matrike z danim osnovnim naslovom in velikostjo podatkovnega elementa.
Prednost C Array
1) Optimizacija kode : Manj kode za dostop do podatkov.
2) Enostavnost prečkanja : Z uporabo zanke for lahko enostavno pridobimo elemente matrike.
3) Enostavnost razvrščanja : Za razvrščanje elementov matrike potrebujemo le nekaj vrstic kode.
4) Naključni dostop : Do katerega koli elementa lahko dostopamo naključno z uporabo matrike.
Pomanjkljivost C Array
1) Fiksna velikost : Ne glede na velikost, ki jo določimo ob deklaraciji matrike, ne moremo preseči omejitve. Torej ne povečuje dinamično velikosti kot LinkedList, kar se bomo naučili kasneje.
Deklaracija matrike C
Matriko v jeziku c lahko deklariramo na naslednji način.
data_type array_name[array_size];
Zdaj pa si oglejmo primer deklaracije matrike.
int marks[5];
Tukaj je int data_type , oznake so ime_matrike , in 5 je velikost_matrike .
Inicializacija matrike C
Najenostavnejši način za inicializacijo matrike je z uporabo indeksa vsakega elementa. Vsak element matrike lahko inicializiramo z uporabo indeksa. Razmislite o naslednjem primeru.
testni primeri junit
marks[0]=80;//initialization of array marks[1]=60; marks[2]=70; marks[3]=85; marks[4]=75;
Primer niza C
#include int main(){ int i=0; int marks[5];//declaration of array marks[0]=80;//initialization of array marks[1]=60; marks[2]=70; marks[3]=85; marks[4]=75; //traversal of array for(i=0;i<5;i++){ printf('%d ',marks[i]); } end of for loop return 0; < pre> <p> <strong>Output</strong> </p> <pre> 80 60 70 85 75 </pre> <h2>C Array: Declaration with Initialization</h2> <p>We can initialize the c array at the time of declaration. Let's see the code.</p> <pre> int marks[5]={20,30,40,50,60}; </pre> <p>In such case, there is <strong>no requirement to define the size</strong> . So it may also be written as the following code.</p> <pre> int marks[]={20,30,40,50,60}; </pre> <p>Let's see the C program to declare and initialize the array in C.</p> <pre> #include int main(){ int i=0; int marks[5]={20,30,40,50,60};//declaration and initialization of array //traversal of array for(i=0;i<5;i++){ printf('%d ',marks[i]); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 20 30 40 50 60 </pre> <h2>C Array Example: Sorting an array</h2> <p>In the following program, we are using bubble sort method to sort the array in ascending order.</p> <pre> #include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf('printing sorted element list ... '); for(i="0;" i<10; printf('%d ',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf('Enter the size of the array?'); scanf('%d',&n); printf('Enter the elements of the array?'); for(i = 0; i<n; i++) { scanf('%d',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest && arr[i]!=largest) { sec_largest=arr[i]; } } printf('largest = %d, second largest = %d',largest,sec_largest); } </n;></pre> <hr></10;></pre></5;i++){></pre></5;i++){>
C Array: Deklaracija z inicializacijo
Matriko c lahko inicializiramo v času deklaracije. Poglejmo kodo.
int marks[5]={20,30,40,50,60};
V takem primeru obstaja ni potrebe po določitvi velikosti . Torej se lahko zapiše tudi kot naslednja koda.
int marks[]={20,30,40,50,60};
Oglejmo si program C za deklaracijo in inicializacijo matrike v C.
#include int main(){ int i=0; int marks[5]={20,30,40,50,60};//declaration and initialization of array //traversal of array for(i=0;i<5;i++){ printf(\'%d \',marks[i]); } return 0; < pre> <p> <strong>Output</strong> </p> <pre> 20 30 40 50 60 </pre> <h2>C Array Example: Sorting an array</h2> <p>In the following program, we are using bubble sort method to sort the array in ascending order.</p> <pre> #include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf(\'printing sorted element list ... \'); for(i="0;" i<10; printf(\'%d \',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf('Enter the size of the array?'); scanf('%d',&n); printf('Enter the elements of the array?'); for(i = 0; i<n; i++) { scanf(\'%d\',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest && arr[i]!=largest) { sec_largest=arr[i]; } } printf('largest = %d, second largest = %d',largest,sec_largest); } </n;></pre> <hr></10;></pre></5;i++){>
Primer matrike C: Razvrščanje matrike
V naslednjem programu uporabljamo metodo mehurčkastega razvrščanja za razvrščanje matrike v naraščajočem vrstnem redu.
#include void main () { int i, j,temp; int a[10] = { 10, 9, 7, 101, 23, 44, 12, 78, 34, 23}; for(i = 0; i<10; i++) { for(j="i+1;" j a[i]) temp="a[i];" a[i]="a[j];" a[j]="temp;" } printf(\'printing sorted element list ... \'); for(i="0;" i<10; printf(\'%d \',a[i]); < pre> <h2>Program to print the largest and second largest element of the array.</h2> <pre> #include void main () { int arr[100],i,n,largest,sec_largest; printf('Enter the size of the array?'); scanf('%d',&n); printf('Enter the elements of the array?'); for(i = 0; i<n; i++) { scanf(\'%d\',&arr[i]); } largest="arr[0];" sec_largest="arr[1];" for(i="0;ilargest)" else if (arr[i]>sec_largest && arr[i]!=largest) { sec_largest=arr[i]; } } printf('largest = %d, second largest = %d',largest,sec_largest); } </n;></pre> <hr></10;>
10;>5;i++){>5;i++){>