Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИКУМ_4.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
292.35 Кб
Скачать

28. Поразрядная сортировка

// поразрядная сортировака чисел >=0

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <conio.h>

#define SIZE 10 // максимальная размерность сортируемого массива

int main()

{

int A[SIZE],n; // исходный массив

int B[10][SIZE]; // рабочий 10 - строчный массив

int i,j,k=0,i1,j1=1,m=0,kk=10;

for(i=0;i<=9;i++)

for(j=0;j<SIZE;j++) B[i][j]=-1; // инициализация B[][]

cout<<"Enter n \n";

cin>>n;

cout<<"Enter A[]:\n";

for(i=0;i<n;i++) cin>>A[i];

// поиск максимального числа

int max=A[0];

for(i=0;i<n;i++) if(A[i]>max) max=A[i];

// определение разрядности максимального числа

int t=max;

while(t>=1)

{

t=t/kk;

k++;

}

int digit=k; // размерность максимального числа

// формирование массива B[]

while(j1<=digit) // j1 - индекс цифр чисел

{

j=0; // индекс cтолбца массива В[][j]

for(i=0;i<n;i++) // цикл по числам

{

k=10;

if(A[i]%kk!=0)

{

int kd=kk;

while(k>9)

{

kd=kd/10;

k=(A[i]%kk-A[i]%kd)/kd;

// k – номер строки в массиве В[][]

}

}

else k=0;

if(B[k][j]!=-1) j++;

B[k][j]=A[i];

}

// собираем новый A[]

m=0;

for(i=0;i<=9;i++)

for(i1=0;i1<n;i1++)

if((B[i][i1]!=-1))

{

A[m]=B[i][i1];

m++;

}

// инициализация B[][] для следующих прогонов

for(i=0;i<=9;i++)

for(i1=0;i1<=SIZE-1;i1++) B[i][i1]=-1;

j1++; // переход к сортировке по следующей cтаршей цифре

kk=kk*10; // kk- делитель чисел

}

cout<<" new array A[]: \n";

for(i=0;i<n;i++) cout<<" "<<A[i];

_getch();

return 0;

}

29. Cортировка 1 методом пузырька

// сортировка методом пузырька

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <conio.h>

#define SIZE 10

int main()

{

int A[SIZE],i,n,j;

cout<<"Enter n \n";

cin>>n;

cout<<"Enter A[] \n";

for(i=0;i<n;i++) cin>>A[i];

for(i=1;i<=n-1;i++) // цикл по прогонам массива

{

int flag=1; //признак отсортированности массива

for(j=0;j<n-1;j++) // цикл пл элементам массива

{

if(A[j]>A[j+1])

{

int t=A[j+1];

A[j+1]=A[j];

A[j]=t;

flag=0; //признак не отсортированности массива

}

}

if(flag==1) break;

}

cout<<"\n new A[]: \n";

for(i=0;i<n;i++) cout<<" "<<A[i];

getch();

return 0;

}

30. Cортировка 2 методом пузырька

Автор Моргунов Ю. ГИП-110

// сортировка массива пузырьком, массив задается случайно

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <stdlib.h>

#include <time.h> // библиотека, где лежит функция задания текущего времени

#include <conio.h>

#define SIZE 100

int main()

{

int A[SIZE],i,n,j;

srand(time(NULL));

// функция задания текущего времени в качестве нач. значения при генерации

cout<<"Enter n \n";

cin>>n;

for(i=0;i<n;i++) A[i]=rand()%10;

for(i=1;i<=n-1;i++) // цикл по прогонам массива

{

int flag=1; //признак отсортированности массива

for(j=0;j<n-1;j++) // цикл пл элементам массива

{

if(A[j]>A[j+1])

{

int t=A[j+1];

A[j+1]=A[j];

A[j]=t;

flag=0; //признак не отсортированности массива

}

}

if(flag==1) break;

}

cout<<"\n new A[]: \n";

for(i=0;i<n;i++) cout<<" "<<A[i];

getch();

return 0;

}