Слайд 23.1. Сортировка массивов
Внутренняя сортировка
Внешняя сортировка

Слайд 3Три основных метода сортировки:
Обмен
2. Выбор
3. Вставка

Слайд 43.2. Простые методы сортировки
3.2.1. Метод пузырька и
шейкерная сортировка

Слайд 6void s_puz(int a[], int n)
{
int i, j, t;
![void s_puz(int a[], int n) { int i, j, t;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-5.jpg)
Слайд 7void s_puz(int a[], int n)
{
int i, j, t;
for(i=1; i <
![void s_puz(int a[], int n) { int i, j, t; for(i=1; i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-6.jpg)
n; i++)
for( j=n-1; j >= i; j--)
Слайд 8void s_puz(int a[], int n)
{
int i, j, t;
for(i=1; i <
![void s_puz(int a[], int n) { int i, j, t; for(i=1; i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-7.jpg)
n; i++)
for( j=n-1; j >= i; j--)
if(a[j-1] > a[j])
Слайд 9void s_puz(int a[], int n)
{
int i, j, t;
for(i=1; i <
![void s_puz(int a[], int n) { int i, j, t; for(i=1; i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-8.jpg)
n; i++)
for( j=n-1; j >= i; j--)
if(a[j-1] > a[j])
{
t = a[j-1];
a[j-1] = a[j];
a[j] = t;
}
}
Слайд 10void s_shaker(int a[], int n)
{ int i,j,t, l=0, r=n, k;
do
{
![void s_shaker(int a[], int n) { int i,j,t, l=0, r=n, k; do](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-9.jpg)
for( j=n-1; j > l; j--)
if(a[j-1] > a[j])
{
t = a[j-1];
a[j-1] = a[j];
a[j] = t;
k=j;
}
l=k+1;
Слайд 11 for(i=1; i < r; i++)
if(a[i-1] > a[i])
{
t
![for(i=1; i if(a[i-1] > a[i]) { t = a[i-1]; a[i-1] = a[i];](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-10.jpg)
= a[i-1];
a[i-1] = a[i];
a[i] = t;
k=i;
}
r=k-1;
} while(l}
Слайд 13void s_vb(int a[], int n)
{ int imin, i, j, t;
![void s_vb(int a[], int n) { int imin, i, j, t;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-12.jpg)
Слайд 14void s_vb(int a[], int n)
{ int imin, i, j, t;
for (i=0; i
![void s_vb(int a[], int n) { int imin, i, j, t; for (i=0; i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-13.jpg)
i++)
Слайд 15void s_vb(int a[], int n)
{ int imin, i, j, t;
for(i=0; i {
![void s_vb(int a[], int n) { int imin, i, j, t; for(i=0;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-14.jpg)
imin=i;
for(j=i+1; j if (a[imin]>a[j]) imin=j;
Слайд 16void s_vb(int a[], int n)
{ int imin, i, j, t;
for(i=0; i {
![void s_vb(int a[], int n) { int imin, i, j, t; for(i=0;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-15.jpg)
imin=i;
for(j=i+1; j if (a[imin]>a[j]) imin=j;
if (imin != i) {
t = a[imin];
a[imin] = a[i];
a[i] = t;
}
}
}
Слайд 193.3. Улучшенные методы сортировки

Слайд 21void s_shell(int a[], int n)
{
int i, j, t;
for(int d=3; d>0; d--)
![void s_shell(int a[], int n) { int i, j, t; for(int d=3;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-20.jpg)
for(i=d; i
{
t = a[i];
for(j=i-d; j>=0 && t a[j+d] = t;
}
}
Слайд 223.3.2. Сортировка слиянием
a[1..n]
a[l, m] a[m+1,r]
![3.3.2. Сортировка слиянием a[1..n] a[l, m] a[m+1,r]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-21.jpg)
Слайд 23void slip(int l, int m, int r)
{
int i=l, j=m+1, k=0;
while ((i<=m) &&

Слайд 24void s_sl(int l, int r)
{
if (l < r)
{
int m=(l+r)/2;
s_sl(l,m);

s_sl(m+1,r);
slip(l,m,r);
}
}
Слайд 263.3.3. Метод QuickSort
(быстрая сортировка
или сортировка Хоара)

Слайд 27do {
while (a[i] < x && i < right) i++;
while (a[j]
![do { while (a[i] while (a[j] > x && j > left)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-26.jpg)
> x && j > left) j--;
if (i<=j) {
t = a[i];
a[i] = a[j];
a[j] = t;
i++; j--;
}
} while(i<=j);
Слайд 28 if(left < j) s_qsr(left, j);
if(i < right) s_qsr(i, right);
}

Слайд 29void s_qs(char a[], int n)
{
struct
{
int l;
![void s_qs(char a[], int n) { struct { int l; int r; } stack[20];](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-28.jpg)
int r;
} stack[20];
Слайд 30int i, j, left, right, x, t, s=0;
stack[s].l = 0;
stack[s].r =
![int i, j, left, right, x, t, s=0; stack[s].l = 0; stack[s].r](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-29.jpg)
n-1;
while (s != -1)
{
left=stack[s].l; right=stack[s].r;
s--;
Слайд 31while (left < right)
{
i=left; j=right; x=a[(left+right)/2];
while (i <= j) {
while (a[i] <
![while (left { i=left; j=right; x=a[(left+right)/2]; while (i while (a[i] while (a[j]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-30.jpg)
x) i++;
while (a[j] > x) j--;
if (i<=j) {
t=a[i]; a[i]=a[j]; a[j]=t;
i++; j--;
}
}
Слайд 32if ((j-left)<(right-i))
{
if (i stack[s].l=i; stack[s].r=right; }
right=j;
}
else {
if (left
![if ((j-left) { if (i stack[s].l=i; stack[s].r=right; } right=j; } else {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-31.jpg)
{s++;
stack[s].l=left; stack[s].r=j; }
left=i;
}
} } }
Слайд 34Линейный поиск
int p_lin1(int a[],int n, int x)
![Линейный поиск int p_lin1(int a[],int n, int x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-33.jpg)
Слайд 35int p_lin1(int a[],int n, int x)
{
for(int i=0; i < n; i++)
![int p_lin1(int a[],int n, int x) { for(int i=0; i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-34.jpg)
Слайд 36int p_lin1(int a[],int n, int x)
{
for(int i=0; i < n; i++)
![int p_lin1(int a[],int n, int x) { for(int i=0; i if (a[i]==x) return i;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-35.jpg)
if (a[i]==x) return i;
Слайд 37int p_lin1(int a[],int n, int x)
{
for(int i=0; i < n; i++)
![int p_lin1(int a[],int n, int x) { for(int i=0; i if (a[i]==x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-36.jpg)
if (a[i]==x) return i;
return -1;
}
Слайд 38int p_lin1(int a[],int n, int x)
{
for(int i=0; i < n; i++)
![int p_lin1(int a[],int n, int x) { for(int i=0; i if (a[i]==x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-37.jpg)
if (a[i]==x) return i;
return -1;
}
Слайд 39int p_lin2(int a[],int n, int x)
![int p_lin2(int a[],int n, int x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-38.jpg)
Слайд 40int p_lin2(int a[],int n, int x)
{
a[n]=x;
int i=0;
![int p_lin2(int a[],int n, int x) { a[n]=x; int i=0;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-39.jpg)
Слайд 41int p_lin2(int a[],int n, int x)
{
a[n]=x;
int i=0;
while (a[i]!=x) i++;
![int p_lin2(int a[],int n, int x) { a[n]=x; int i=0; while (a[i]!=x) i++;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-40.jpg)
Слайд 42int p_lin2(int a[],int n, int x)
{
a[n]=x;
int i=0;
while (a[i]!=x) i++;
if (i==n)
![int p_lin2(int a[],int n, int x) { a[n]=x; int i=0; while (a[i]!=x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-41.jpg)
return -1;
Слайд 43int p_lin2(int a[],int n, int x)
{
a[n]=x;
int i=0;
while (a[i]!=x) i++;
if (i==n)
![int p_lin2(int a[],int n, int x) { a[n]=x; int i=0; while (a[i]!=x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-42.jpg)
return -1;
else return i;
}
Слайд 44Поиск делением пополам
int p_dv(int a[], int n, int x)
![Поиск делением пополам int p_dv(int a[], int n, int x)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-43.jpg)
Слайд 45int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-44.jpg)
Слайд 46int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m; while(i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-45.jpg)
Слайд 47int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
while(i m=(i+j)/2;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m; while(i m=(i+j)/2;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-46.jpg)
Слайд 48int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
while(i m=(i+j)/2;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-47.jpg)
if (x > a[m]) i=m+1; else j=m;
}
Слайд 49int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
while(i m=(i+j)/2;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-48.jpg)
if (x > a[m]) i=m+1; else j=m;
}
if (a[i]==x) return i;
Слайд 50int p_dv(int a[], int n, int x)
{
int i=0, j=n-1, m;
while(i m=(i+j)/2;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-49.jpg)
if (x > a[m]) i=m+1; else j=m;
}
if (a[i]==x) return i;
else return -1;
}
Слайд 53int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-52.jpg)
Слайд 54int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m; while(i](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-53.jpg)
Слайд 55int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-54.jpg)
{
if (a[i]==a[j]) if (a[i]==x) return i;
else return -1;
Слайд 56int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-55.jpg)
{
if (a[i]==a[j]) if (a[i]==x) return i;
else return -1;
m=i+(j-i)*(x-a[i])/(a[j]-a[i]);
Слайд 57int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-56.jpg)
{
if (a[i]==a[j]) if (a[i]==x) return i;
else return -1;
m=i+(j-i)*(x-a[i])/(a[j]-a[i]);
if (a[m]==x) return m;
Слайд 58int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-57.jpg)
{
if (a[i]==a[j]) if (a[i]==x) return i;
else return -1;
m=i+(j-i)*(x-a[i])/(a[j]-a[i]);
if (a[m]==x) return m;
else
Слайд 59int p_dv(int a[], int n, int x)
{ int i=0, j=n-1, m;
while(i
![int p_dv(int a[], int n, int x) { int i=0, j=n-1, m;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1112656/slide-58.jpg)
{
if (a[i]==a[j]) if (a[i]==x) return i;
else return -1;
m=i+(j-i)*(x-a[i])/(a[j]-a[i]);
if (a[m]==x) return m;
else if (x > a[m]) i=m+1; else j=m-1;