Documente Academic
Documente Profesional
Documente Cultură
Tema: Sortarea
A controlat:______________(lect.univ. M.Guțu)
Chișinău 2021
F. Equalize the Array
#include <stdio.h>
#include <stdlib.h>
void afisare(int a[],int n)
{
for (int i=0; i<n; i++){
printf("%d ",a[i]);
}
printf("\n");
}
int shellsort(int a[], int n)
{
for (int gap=n/2; gap>0; gap/=2)
{
for (int i=gap; i<n; i+=1){
int temp=a[i];
int j;
for (j=i; j>=gap && a[j-gap] > temp; j-=gap)
a[j]=a[j-gap];
a[j]=temp;
}
}
return 0;
}
2
int main()
{
int a[]={1, 3, 2, 1, 4, 2},poz1,poz2;
int n=sizeof(a)/sizeof(a[0]);
afisare(a,n);
printf("Scrieti pozitia care doriti sa o eliminati \n");
scanf("%d %d",&poz1,&poz2);
if (poz1>= n+1 && poz2>=n+1)
printf("Eliminarea nu e posibila \n");
else
{
for (int i=poz1; i<n-1; i++)
a[i]=a[i+1];
for (int i=poz2; i<n-2; i++)
a[i]=a[i+1];
printf("Arrayul rezultant: \n");
for (int i=0; i<n-1; i++)
printf("%d ",a[i]);
}
shellsort(a,n);
printf("\nArrayul dupa sortare \n");
afisare(a,n);
return 0;
}
Shell sort
3
#include <stdio.h>
#include <stdlib.h>
int temp=arr[i];
int j;
for (j=i; j>=gap && arr[j-gap] > temp; j-=gap)
arr[j]=arr[j-gap];
arr[j]=temp;
}
}
return 0;
}
void afisare(int arr[],int n)
{
for (int i=0; i<n; i++){
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
4
{
int arr[]={3, 1, 55, 32, 13},i;
int n=sizeof(arr)/sizeof(arr[0]);
printf("Arrayul inainte sortare:\n");
afisare(arr,n);
shellsort(arr,n);
printf("\nArrayul dupa sortare:\n");
afisare(arr,n);
return 0;
}
Se dă un şir cu n numere întregi. Să se ordoneze numerele din sirul dat utilizand
sortarea quicksort.
void afisare(int a[],int n)
{
for (int i=0; i<n; i++){
printf("%d ",a[i]);
}
printf("\n");
}
void schimbare(int* a, int* b)
{
int t = *a;
*a = *b;
*b = t;
}
int partition (int arr[], int low, int high)
5
{
int pivot = arr[high];
int i = (low - 1);
7
}
}
schimbare(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main(){
int a[] = {10, 7, 8, 9, 1, 5,44,21,47,87,2,6,12};
int n = sizeof(a) / sizeof(a[0]);
for (int i=0; i<n; i++){
printf("%d ",a[i]);
}
quickSort(a, 0, n - 1);
printf("\nArrayul sortat par:");
for (int i = 1; i <= n; i++)
if (a[i] % 2 == 0)
printf("%d ",a[i]);
8
return 0;}
Se dă un şir cu n numere întregi. Să se ordoneze numerele din sirul dat utilizand
sortarea heapsort.
void schimbare(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
9
void heapSort(int arr[], int n) {
for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);
for (int i = n - 1; i >= 0; i--) {
schimbare(&arr[0], &arr[i]);
heapify(arr, i, 0);
}
}
10
*b = temp;
}
12