1.2 laboratoriya mashg’uloti
Mavzu: Massiv elementlarini tartiblashtirish. Matrisa maksimal, minimal elementnlarini aniqlash algoritmi
masala. Butun sonlardan iborat n ta son berilgan. Shu sonlarni elementlar miqdori kamayish tartibida chiqarish algoritmi va dasturini tuzing.
t/r
|
Element soni va miqdori
|
Tartiblangan massiv
|
1
|
5
23 45 34 56 25
|
56 45 36 25 23
|
2
|
10
5 3 -2 -5 0 1 0 5 8 7
|
8 7 5 5 3 1 0 0 -2 -5
|
Dastur kodi
#include
using namespace std;
int main()
{
int n,t;
cin>>n;
int a[n];
for(int i=0; i cin>>a[i];
for(int i=0; i for(int j=i+1; j if (a[i] {
t=a[i];
a[i]=a[j];
a[j]=t;
}
//swap(a[i], a[j]);
for(int i=0; i cout< cout< cout<Natija
5
23 25 45 57 39
57 45 39 25 23
Quick sort – tez saralash usuli
Bu usulning g‘oyasi to‘g‘ridan–to‘g‘ri almashtirish algoritmidagi saralashga tegishli bo‘lib, uning asosini kalitlarni tanlangan tayanch kalitga nisbatan ikkiga ajratish tashkil qiladi.
Mazkur algoritmning ishlash tamoyili quyidagicha:
1-qadam. massivdan tayanch elementni tanlash.
2-qadam. Massivni belgilangan tayanch kalitga nisbatan ikkiga ajratish, ya’ni, tayanch kalitga nisbatan kichik yoki teng elementlar chap qismga, katta yoki teng elementlar o‘ng qism massivga joylashtiradi.
3-qadam. Massivda ikkita qism massivlar hosil qilindi.
4-qadam. Ikkita qism massivlar orasida qiyosiy saralash va qism massivlarning tarkibi elementlari orasida saralash rekursiv holda amalga oshiriladi.
5 dan chap tomonda kalitlari kichik, o‘ng tomonda esa kalitlari 5 dan katta bo‘lgan elementlar joylashadi (yuqoridagi chizma).
2-masala. N ta butun sonlardan iborat bir o’lchovli massiv berilga. Shu massiv elementlarini o’sish tartibida saralash dasturini tuzing.
Dastur kodi.
#include
#include
#include
using namespace std;
const int n=7;
int first, last;
//saralash funksiyasi
void quicksort(int *mas, int first, int last)
{
int mid, count;
int f=first, l=last;
mid=mas[(f+l) / 2]; //mos elementni hisoblash
do
{
while (mas[f]while (mas[l]>mid) l--;
if (f<=l) //elementlarni almashtirish
{
count=mas[f];
mas[f]=mas[l];
mas[l]=count;
f++;
l--;
}
} while (fif (first t(mas, first, l);
if (f}
//bosh funksiya
int main()
{
int *A=new int[n];
srand(time(NULL));
cout<<"Massivni kiritish: ";
for (int i=0; i{
A[i]=rand()%10;
cout<}
first=0; last=n-1;
quicksort(A, first, last);
cout<for (int i=0; idelete []A;
}
masala. Butun sonlardan iborat 2 o’lchovli matritsa berilgan. Matritsaning eng katta va eng kichik elementlarini aniqlash dasturini tuzing.
matritsa o'lchami n= 4
4 5 8 6
7 2 1 0
4 3 5 9
0 1 4 0
matritsaning eng katta elementi 9 indekslari 3 4
matritsaning eng kichik elementi 0 indekslari 2 4
Dastur kodi
#include
using namespace std;
int main()
{
int n,t;
cout<<"matritsa o'lchamini kiriting n= ";
cin>>n;
int a[n][n];
cout<<"matritsa qiymatlarini kiriting "< for(int i=0; i for(int j=0; j cin>>a[i][j];
int min_a=a[0][0];
int max_a=a[0][0];
int max_in_i, min_in_i, max_in_j, min_in_j;
for(int i=0; i for(int j=0; j {
if (a[i][j] {
min_a=a[i][j];
min_in_i=i;
min_in_j=j;
}
if (a[i][j]>max_a)
{
max_a=a[i][j];
max_in_i=i;
max_in_j=j;
}
}
cout<<"matritsaning eng katta elementi "< cout<<"matritsaning eng kichik elementi "<}
Natija
Do'stlaringiz bilan baham: |