Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 999 / 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] &amp;&amp; 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] &amp;&amp; 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)
{
}
//---------------------------------------------------------------------------

Главное окно


Окно About


Александр Даниленко
Александр Даниленко
Стоит Windows 8 Pro, Visual Studio 2010 Express Edition .