Sunteți pe pagina 1din 4

Elemente de baz ale programrii n C - Aplicaii de Laborator

Laborator nr. 12
Sortarea i cutarea seturilor de date. Cozi, stive, liste
nlnuite
12.1.

Exemple

Problema 12.1.
//Metoda bulelor
#include<stdio.h>
#include<conio.h>
void bubble(int a[],int n)
{
int i,j,t;
for(i=n-2;i>=0;i--)
{
for(j=0;j<=i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void main()
{
int a[100],n,i;
printf("\n\n Precizati numarul de valori intregi care vor fi sortate ");
scanf("%d",&n);
for( i=0;i<=n-1;i++)
{
printf("\n\n Enter integer value for element no.%d : ",i+1);
scanf("%d",&a[i]);
}
bubble(a,n);
printf("\n\n Finally sorted array is: ");
88
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

for( i=0;i<=n-1;i++)
printf("%3d",a[i]);
}
Problema 12.2.
//Metoda inserrii
#include<stdio.h>
void main()
{
int A[20], N, Temp, i, j;
printf("\n\n\t ENTER THE NUMBER OF TERMS...: ");
scanf("%d", &N);
printf("\n\t ENTER THE ELEMENTS OF THE ARRAY...:");
for(i=0; i<N; i++)
{
scanf("\n\t\t%d", &A[i]);
}
for(i=1; i<N; i++)
{
Temp = A[i];
j = i-1;
while(Temp<A[j] && j>=0)
{
A[j+1] = A[j];
j = j-1;
}
A[j+1] = Temp;
}
printf("\n\tTHE ASCENDING ORDER LIST IS...:\n");
for(i=0; i<N; i++)
printf("\n\t\t\t%d", A[i]);
getch();
}
Problema 12.3.
//Metoda seleciei
#include "stdio.h"
void main( )
{
int arr[5] = { 25, 17, 31, 13, 2 } ;
int i, j, temp ;
for ( i = 0 ; i <= 3 ; i++ )
{
for ( j = i + 1 ; j <= 4 ; j++ )
89
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

{
if ( arr[i] > arr[j] )
{
temp = arr[i] ;
arr[i] = arr[j] ;
arr[j] = temp ;
}
}
}
printf ( "\n\nArray after sorting:\n") ;
for ( i = 0 ; i <= 4 ; i++ )
printf ( "%d\t", arr[i] ) ;
}
Problema 12.4.
//Cutarea secveniala (liniara)
#include<stdio.h>
void main()
{
int array[100], search, c, number;
printf("Precizati numarul de elemente din vector\n");
scanf("%d",&number);
printf("Enter %d numbers\n", number);
for ( c = 0 ; c < number ; c++ )
scanf("%d",&array[c]);
printf("Enter the number to search\n");
scanf("%d",&search);
for ( c = 0 ; c < number ; c++ )
{
if ( array[c] == search )
/* if required element found */
{
printf("%d is present at location %d.\n", search, c+1);
break;
}
}
if ( c == number )
printf("%d is not present in array.\n", search);
return 0;
}
Problema 12.5.
//Cutare binar (presupune ca valorile sunt ordonate cresctor; e mult mai rapida dect
cutarea liniar)
#include<stdio.h>
90
MatrixRom 2013

ISBN: 978-973-755-897-8

Elemente de baz ale programrii n C - Aplicaii de Laborator

void main()
{
int c, first, last, middle, n, search, array[100];
printf("Enter number of elements\n");
scanf("%d",&n);
printf("Enter %d integers\n", n);
for ( c = 0 ; c < n ; c++ )
scanf("%d",&array[c]);
printf("Enter value to find\n");
scanf("%d",&search);
first = 0;
last = n - 1;
middle = (first+last)/2;
while( first <= last )
{
if ( array[middle] < search )
first = middle + 1;
else
if ( array[middle] == search )
{
printf("%d found at location %d.\n",
search, middle+1);
break;
}
else
last = middle - 1;
middle = (first + last)/2;
}
if ( first > last )
printf("Not found! %d is not present in the list.\n", search);
return 0;
}

91
MatrixRom 2013

ISBN: 978-973-755-897-8

S-ar putea să vă placă și