Задачи - сортирање на низи

Да се напише програма со која се подредуваат елементите од низа а со н елементи во растечки редослед и да се отпечати новодобиената низа.

#include <iostream>
using namespace std;
int main()
{
int n, i, j, a[100],p;
cout<<"Vnesi go brojot na elementi vo nizata"<<endl;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
{
 for(j=i+1;j<n;j++)
 {
   if(a[i]>a[j])
    { p=a[i]; a[i]=a[j]; a[j]=p; }
}
}
cout<<"Podredena nizata e "<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}

Да се напише програма со која се подредуваат елементите од низа а со н елементи во опаѓачки редослед и да се отпечати новодобиената низа.

#include <iostream>
using namespace std;
int main()
{
int n,i,j,a[100],p;
cout<<"Vnesi go brojot na elementi vo nizata"<<endl;
cin>>n;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n-1;i++)
{
  for(j=i+1;j<n;j++)
  {
    if(a[i]<a[j])
     swap(a[i],a[j]);
   }
}

cout<<"Podredena nizata e "<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}

Да се подреди низата [ai]n во растечки редослед, со истовремено наоѓање и на најмалиот и најголемиот елемент.

Објаснување:
Постапката е следна: Најмалиот елемент од а1 до аn го доведуваме на прво место, а најголемиот на n-то место, најмалиот елемент од а2 до а n-1 го доведуваме на второ место, а најголемиот на (n-1)-во место итн.

#include<iostream>
using namespace std;
int main()
{
int a[100];
int n,i,j,pom;
cout << "Vnesi go brojot na elementi "<<endl;
cin>>n;
cout << "Vnesi gi elementite na nizata " << endl;
for(i=0;i<n;i++)
cin >> a[i];
for(i=0;i<n/2;i++)
{
 for(j=i;j<=n-i-1;j++)
 {
  if(a[j]<a[i])
    swap(a[j],a[i]);
  if(a[j]>a[n-i-1])
     swap(a[j],a[n-i-1]);
 }
}

cout<<"Podredenata niza e:"<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}

Да се сортира низата [ai]n во растечки редослед, со бинарно додавање.

Објаснување: Под бинарно додавање се подразбира додавање на елемент во сортирана низа со бинарно наоѓање на местото на додавање. По наоѓање на местото каде што треба да се вметне елементот, сите елементи десно од тоа место се поместуваат за едно место надесно и се запишува новиот елемент

#include<iostream>
using namespace std;
int main()
{
int a[100],b[100];
int i,j,k,t,m,n,levo,desno,sredina;
cout << "Vnesi go brojot na elementi na nizata "<<endl;
cin>>n;
cout << "Vnesi gi elementite na nizata: " << endl;
for(i=1;i<=n;i++)
cin >> a[i];
m=0;
for(i=1;i<=n;i++)
{
t=a[i];
if((m==0)||(t>b[m]))
b[m+1]=t;
else
{
levo=1;
desno=m;
do
{
sredina=((levo+desno)/2);
if(t>b[sredina])
levo=sredina+1;
else
desno=sredina-1;
}
while(levo<=desno);

j=levo;
for(k=m;k>=j;k--)
b[k+1]=b[k];
b[j]=t;
}

m++;
}

cout<<"Sortiranata niza e:"<<endl;
for(i=1;i<=m;i++)
cout<<b[i]<<" ";
cout<<endl;
return 0;
}

No comments: