Lab #1 SDA 2020

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 18

Disciplina: Structuri de date si algoritmi

Lucrare de laborator #1
Tema: Algoritmi de sortare

A efectuat student: *******

A controlat: Gutu Maria

Chişinău 2020
1. BubbleSort Crescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void BSC(int a[], int n)


{
int i=0,j=0,tmp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
BSC(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
2
}

return 0;
}

2. BubbleSort Descrescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void BSD(int a[], int n)


{
int i=0,j=0,tmp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
BSD(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
}

return 0;
3
}

3. BubbleSort Crescator pe Coloane:

#include <stdlib.h>
#include <stdio.h>

void BSC(int a[], int n)


{
int i=0,j=0,tmp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]>a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}

int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
BSC(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
}
return 0;

4
}

4. BubbleSort Descrescator pe coloane:

#include <stdlib.h>
#include <stdio.h>

void BSD(int a[], int n)


{
int i=0,j=0,tmp;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
{
if(a[j]<a[j+1])
{
tmp=a[j];
a[j]=a[j+1];
a[j+1]=tmp;
}
}
}
}
int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
BSD(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}

5
5. Insertion Sort Crescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void ISC(int a[], int n)


{
for(int i=1;i<n;i++)
{
int tmp=a[i];
int j=i-1;
while(tmp<a[j] && j>=0)
{
a[j+1]=a[j];
--j;
}
a[j+1]=tmp;
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
ISC(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
}

return 0;
}

6
6. Insertion Sort Descrescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void IS(int a[], int n)


{
for(int i=1;i<n;i++)
{
int tmp=a[i];
int j=i-1;
while(tmp>a[j] && j>=0)
{
a[j+1]=a[j];
--j;
}
a[j+1]=tmp;
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
ISD(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
}

return 0;
}

7
7. Insertion Sort Crescator pe coloane:

#include <stdlib.h>
#include <stdio.h>

void IS(int a[], int n)


{
for(int i=1;i<n;i++)
{
int tmp=a[i];
int j=i-1;
while(tmp<a[j] && j>=0)
{
a[j+1]=a[j];
--j;
}
a[j+1]=tmp;
}
}
int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
IS(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}

8
8. Insertion Sort Descrescator pe coloane:

#include <stdlib.h>
#include <stdio.h>

void IS(int a[], int n)


{
for(int i=1;i<n;i++)
{
int tmp=a[i];
int j=i-1;
while(tmp>a[j] && j>=0)
{
a[j+1]=a[j];
--j;
}
a[j+1]=tmp;
}
}
int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
IS(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
}
return 0;
}

9
9. Selection Sort Crescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void swap(int *a, int *b)


{
int temp = *a;
*a = *b;
*b = temp;
}

void SS(int a[], int n)


{
for (int step = 0; step < n - 1; step++)
{
int min_idx = step;
for (int i = step + 1; i < n; i++) if (a[i] < a[min_idx]) min_idx = i;
swap(&a[min_idx], &a[step]);
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
SS(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
}

return 0;
}

10
10. Selection Sort descrescator pe linii:

#include <stdlib.h>
#include <stdio.h>

void swap(int *a, int *b)


{
int temp = *a;
*a = *b;
*b = temp;
}

void SS(int a[], int n)


{
for (int step = 0; step < n - 1; step++)
{
int min_idx = step;
for (int i = step + 1; i < n; i++) if (a[i] > a[min_idx]) min_idx = i;
swap(&a[min_idx], &a[step]);
}
}

int main() {
int n,i,j,m;
int a[100][100],b[100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) b[j]=a[i][j];
SS(b,m);
for(j=0;j<m;j++) printf("%d ", b[j]);
printf("\n");
}

return 0;
}

11
11. Selection Sort Crescator pe coloane:

#include <stdlib.h>
#include <stdio.h>

void swap(int *a, int *b)


{
int temp = *a;
*a = *b;
*b = temp;
}

void SS(int a[], int n)


{
for (int step = 0; step < n - 1; step++)
{
int min_idx = step;
for (int i = step + 1; i < n; i++) if (a[i] < a[min_idx]) min_idx = i;
swap(&a[min_idx], &a[step]);
}
}

int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
SS(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
}
return 0;

12
}

12. Selection Sort descrescator pe coloane:

#include <stdlib.h>
#include <stdio.h>

void swap(int *a, int *b)


{
int temp = *a;
*a = *b;
*b = temp;
}

void SS(int a[], int n)


{
for (int step = 0; step < n - 1; step++)
{
int min_idx = step;
for (int i = step + 1; i < n; i++) if (a[i] > a[min_idx]) min_idx = i;
swap(&a[min_idx], &a[step]);
}
}

int main() {
int n,i,j,m,o;
int a[100][100],b[100],c[100][100];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++) for(j=0;j<m;j++) scanf("%d",&a[i][j]);
for(j=0;j<m;j++)
{
for(i=0;i<n;i++) b[i]=a[i][j];
SS(b,m);
for(i=0;i<n;i++) c[i][j]=b[i];
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++) printf("%d ",c[i][j]);
printf("\n");
13
}
return 0;
}

13.

#include <stdio.h>
#include <stdbool.h>
#include <limits.h>

int n,m,k=0;

void sort(int *c,int n)


{
bool temp=true;
int t;
while(temp)
{
temp=false;
for(int i=0;i<n-1;i++)
{
if(c[i]>c[i+1])
{
temp=true;
t=c[i];
c[i]=c[i+1];
c[i+1]=t;
}
}
}
}

int main ()

{
int cc;
scanf("%d %d", &n,&m);
int a[n][m],b[n][m],c[n*m];
14
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d", &a[i][j]);
c[k++]=a[i][j];
}
}
printf("\n");
sort(c,n*m);
bool f1=true,f2=true,f3=true,f4=true;
k=0;
int i=0,j=0,maxH=n-1,minH=0,maxW=m-1,minW=0;
while(k<n*m)
{
b[i][j]=c[k++];
if(j==maxW && i>minH) i--;
else if(i==minH && j>minW) j--;
else if(j==minW && i<maxH) i++;
else if(i==maxH && j<maxW) j++;
if(i==maxH && j==maxW && f1) maxH--,f1=false,f2=true,f3=true,f4=true;
else if(j==maxW && i==minH && f2) maxW--,f2=false,f1=true,f3=true,f4=true;
else if(i==minH && j==minW && f3) minH++,f3=false,f1=true,f2=true,f4=true;
else if(j==minW && i==maxH && f4) minW++,f4=false,f1=true,f2=true,f3=true;
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++) printf("%d ", b[i][j]);
printf("\n");
}
return 0;
}

14. Calculati suma tuturor elementelor unui tablou unidimensional utilizand metoda Divide et
Impera.

#include <stdio.h>
#include <stdbool.h>
#include <limits.h>

int sum(a,left,right)
{
15
int mid=(left+right)/2;
if(left>=right) return 0;
else return sum(a,left,mid-1)+a[mid]+sum(a,mid+1,right);
}

int main ()

{
int n;
scanf("%d", &n);
int a[105],left=0,right=n-1;
for(int i=0;i<n;i++) scanf("%d", &a[i]);
prinf("%d", sum(a,left,right));
return 0;
}

15.

#include <stdio.h>
#include <stdbool.h>
#include <limits.h>

void sort(int *c,int n)


{
bool temp=true;
int t;
while(temp)
{
temp=false;
for(int i=0;i<n-1;i++)
{
if(c[i]>c[i+1])
{
temp=true;
16
t=c[i];
c[i]=c[i+1];
c[i+1]=t;
}
}
}
}

bool isprime(p)
{
for(int j=2;j<p/2;j++)
{
if(p%j!=0) continue;
else return 1;
}
return 0;
}

int main ()

{
int n,p;
scanf("%d", &n);
int a[1001],b[500],c[500],py=0,pn=0,sum;
for(int i=0;i<n;i++) scanf("%d", &a[i]);
sort(a,n);
for(int i=0;i<n;i++)
{
if(isprime(a[i])==1) b[py]=a[i],py++;
else c[pn]=a[i],pn++;
}
for(int j=0;j<pn;j++) printf("%d ", c[j]);
for(int i=py-1;i>=0;i--) printf("%d ", b[i]);

return 0;
}

16.

#include <stdio.h>
#include <stdbool.h>
#include <limits.h>

void swap(int *a, int *b)


{
17
int t=*a;
*b=*a;
*a=t;
}
int sum(int n)
{
int temp;
while(n!=0)
{
temp+=(n%10);
n/=10;
}
return temp;
}

int main ()

{
int n,p;
scanf("%d", &n);
int a[1001],b[500],c[500],py=0,pn=0;
for(int i=0;i<n;i++) scanf("%d", &a[i]);
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(sum(a[i])%2==0 && sum(a[j])%2==0 && a[i]<a[j]) swap(a[i],a[j]);
if(sum(a[i])%2==0 && sum(a[j])%2==0 && a[i]>a[j]) swap(a[i],a[j]);
}
}
for(int i=0;i<n;i++) printf("%d", a[i]);
return 0;
}

18

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy