| Стоит Windows 8 Pro, Visual Studio 2010 Express Edition . |
Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 1003 / 59 | Оценка: 4.11 / 3.89 | Длительность: 29:38:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Самостоятельная работа 12:
Методы сортировки
Файл реализации методов сортировки - Metods.cpp
Файл реализации методов сортировки Metods.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Metods.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// Сортировка простыми включениями
void simplySort(int n, int a[])
{
int i, j, x;
for(i=1; i<n; i++){
x = a[i]; j = i-1;
while(x<a[j] && j>=0){
a[j+1] = a[j];
j--;
}
a[j+1] = x;
}
}
//---------------------------------------------------------------------------
// Сортровка бинарными включениями
void binSort(int n, int *a)
{
int i, j, left, right, m; // индексы элементов
int x; // опорный элемент
for(i = 1; i < n; i++){
x = a[i];
left = 0;
right = i - 1;
while(left <= right){
m = (left + right) / 2;
if(x < a[m])
right = m - 1;
else
left = m + 1;
} // конец while(left <= right)
for(j = i - 1; j >= left; j--)
a[j + 1] = a[j];
a[left] = x;
} // конец for(i = 1; i < n; i++)
}
//---------------------------------------------------------------------------
// Сортировка Шелла
void shellSort(int n, int a[])
{
int i, j, k, m, t;
int x;
static int h[4] = {15, 7, 3, 1};
t = 4;
for(m = 0; m < t; m++){
if(h[m] >= n) continue;
k = h[m];
for(i = k; i < n; i++){
x = a[i];
j = i - k;
while(x < a[j] && j >= 0){
a[j + k] = a[j];
j -= k;
}
a[j + k] = x;
}
}
}
//---------------------------------------------------------------------------
// Сортировка простым выбором
void selectSort(int n, int a[])
{
int i, j, k;
int x; // опорный элемент
for(i = 0; i < n - 1; i++){
k = i;
x = a[i];
for(j = i + 1; j < n; j++)
if(a[j] < x){
k = j;
x = a[j];
}
a[k] = a[i];
a[i] = x;
} // End of for i
}
//---------------------------------------------------------------------------
// Сортировка методом пузырька
void bubbleSort(int n, int a[])
{
int i, j;
int x;
for(i = 1; i < n; i++){
for(j = n - 1; j >= i; j--){
if(a[j-1] > a[j]){
x = a[j-1];
a[j-1] = a[j];
a[j] = x;
}
}
}
}
//---------------------------------------------------------------------------
// Сортировка с памятью обмена
void memorySort(int n, int a[])
{
int i, j, k, m;
int x;
k = 0;
for(i=1; i<n; i++){
m=k;
for(j=n-1; j>m; j--)
if(a[j-1]>a[j]){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
}
if(m==k)
break;
}
}
//---------------------------------------------------------------------------
// Шейкер-сортировка (двухпроходная сортировка)
void shakerSort(int n, int a[])
{
int j, k, left, right;
int x;
left=0;
right=n-1;
k=n-1;
while(left<right){
for(j=right; j>left; j--)
if(a[j-1]>a[j]){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
}
left=k;
for(j=left; j<=right; j++)
if(a[j-1]>a[j]){
x=a[j-1];
a[j-1]=a[j];
a[j]=x;
k=j;
}
right=k-1;
}
}
//---------------------------------------------------------------------------
// Сортировка Хоора (сортировка с разделением;
// "быстрая" сортировка
void quickSort(int n, int a[])
{
void sort(int leftIndex, int rightIndex, int sortArray[]);
sort(0, n-1, a);
}
// Рекурсивная подпрограмма быстрой сортировки
void sort(int left, int right, int a[])
{
register i, j, x;
int w;
i=left; j=right; x=a[(left+right)/2];
while(i<=j){
while(a[i]<x) i++;
while(a[j]>x) j--;
if(i<=j){
w=a[i]; a[i]=a[j]; a[j]=w;
i++; j--;
}
}
if(left<j) sort(left, j, a);
if(i<right) sort(i, right, a);
}
//---------------------------------------------------------------------------Заголовочный файл UAbout.h
Заголовочный файл UAbout.h
//---------------------------------------------------------------------------
#ifndef UAboutH
#define UAboutH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
//---------------------------------------------------------------------------
class TAboutBox : public TForm
{
__published: // IDE-managed Components
TImage *Image;
TLabel *Label1;
TLabel *Label2;
TLabel *Label3;
TLabel *Label4;
TLabel *Label5;
private: // User declarations
public: // User declarations
__fastcall TAboutBox(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TAboutBox *AboutBox;
//---------------------------------------------------------------------------
#endifФайл реализации UAbout.cpp
Файл реализации UAbout.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "UAbout.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TAboutBox *AboutBox;
//---------------------------------------------------------------------------
__fastcall TAboutBox::TAboutBox(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

