Форум программистов, компьютерный форум CyberForum.ru

Алгоритмы сортировок - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Програмки на cpp для вещественных массивов http://www.cyberforum.ru/cpp-beginners/thread28242.html
Пожалуйста помогите написать пару программ на языке cpp: 1. Даны вещественные массивы D, A. Для каждого массива определить среднее арифметическое наибольшего и наименьшего значений массива 2. Даны вещественные массивы A, D . Для каждого массива орпеделить максимальный и минимальный элементы среди элементов, расположенных в нечетных столбцах. Заранее большое спаибо всем кто поможет. Очень...
C++ Создание программы, которая считает выражения, при заданном интервале значений В документе ворда лежит непосредственно задание, заранее спасибо http://www.cyberforum.ru/cpp-beginners/thread28221.html
C++ Не успеваю просмотреть программу сразу исчезает
#include <iostream> using namespace std; int swap(int); int main() { int n=1; swap(n); int y; y=swap(n); cout<<y;
C++ Матрица
В матрице N x M расположить элементы К-той строки по возрастанию Вот что пока получилось...не могу понять, как сделать дальше..... //#include <stdafx.h> #include <iostream.h> //vvoda vivoda #include <conio.h> //biblioteka raboti s ekranom int const x=10; int A, B; //opredelenie dvumernogo massiva
C++ Странные ошибки в функции http://www.cyberforum.ru/cpp-beginners/thread28217.html
#include <iostream> using namespace std; struct times { int hours; int minutes; int seconds; char gen; }; int swap(int,int,int);
C++ одномерный массив, вектор, конструкторы, диструкторы Помогите написать программу, определяющую максимальное, минимальное и среднее значение в одномерном массиве целого типа. Используя понятие класса, сознать новый тип данных - вектор. Предусмотреть: 1) динамическое выделение памяти под вектор (конструктор) 2) освобождение памяти после использования объекта (диструктор), обработку оформить в виде отдельных функций членов подробнее

Показать сообщение отдельно
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446

Алгоритмы сортировок - C++

31.03.2009, 20:10. Просмотров 13433. Ответов 12
Метки (Все метки)

Недавно была необходимость сравнить некоторые алгоритмы сортировок... Если кому-нибудь понадобятся... вообщем вот...

Алгоритмы реализованы ввиде функций, с передачей парметров: Массива A и кол-ва элементов массива n

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Метод простого извлечения
void SimpleExtract(int *A, int n)
{
    int i,y;
 
    for(i=n-1; i>0; i--)
    {
        int max=0;
 
        for (int y=1; y<=i; y++)
            {
                if(A[y]>A[max]) max=y;
            }
 
        int temp = A[i];
        A[i] = A[max];
        A[max] = temp;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// Метод распределения
void Raspredel(int *A, int n)
{
  const int m = 100; // m - число, которое должно быть больше максимального элемента массива A
  int Amount[m];
  int i;
 
  for (i=0; i<m; i++) Amount[i] = 0;
    for (i=0; i<n; i++)
    {
        ++Amount[A[i]];
    }
 
    int k=0;
 
    for (i=0; i<m; i++)
    {
        for (int j=0; j<Amount[i]; j++)
        {
            A[k] = i;
            ++k;
        }
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Метод простого включения
void SimplePut (int *A, int n)
{
    int i,j,Tmp;
 
    for (i=1;i<n;i++)
    {
        Tmp=A[i];
        j=i-1;
 
        while (A[j]>=Tmp && j>=0)
            { A[j+1]=A[j]; j--;}
 
        A[j+1]=Tmp;
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// Метод подсчета
void Counting(int *A, int *B, int n)
{
    for (int i=0; i<n; i++)
    {
        int k = 0;
 
        for (int j=0; j<n; j++)
            if (A[j] < A[i] || (A[j] == A[i] && j<i)) k++;
 
        B[k] = A[i];
    }
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// Метод Шелла
void  Shell(int *A, int n)
{
    int h = n/2;
 
    while (h>0)
    {
        for (int i=0; i<n-h; i++)
        {
            int j = i;
        
            while (j>=0)
            {
                if (A[j] > A[j+h])
                {
                    int tmp = A[j];
                    A[j] = A[j+h];
                    A[j+h] = tmp;
                    j = j-h;
                } 
                else j--;
            }
 
        }
        h = h/2;
    }
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru