Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Пример №1




 

//Методы сортировки массивов данных.

//Массивы одномерные статические.

#include<iostream.h>

#include <locale.h>

//using namespace std;

const int RAZ = 10; //размер массива

typedef int telem; //определение типа элементов массива

typedef telem tmas[RAZ]; //определение типа массива

 

void outputmas(tmas a, int n); //вывод значений элементов массива

void sort_obmen(tmas a, int n); //сортировка методом обмена

void sort_obmenF(tmas a, int n); //сортировка методом обмена с флагом

void sort_vibor(tmas a, int n); //сортировка методом выбора

void sort_vstav(tmas a, int n); //сортировка методом вставки

void sort_quick(tmas a, int t, int n); //метод быстрой сортировки

 

int main()

{tmas mas_a = {10,9,8,7,6,5,4,3,2,1}; //исходный массив а

tmas mas_b = {19,17,15,13,11,9,7,5,3,1}; //исходный массив b

tmas mas_c = {20,18,16,14,12,10,8,6,4,2}; //исходный массив c

tmas mas_d = {1,10,2,9,3,8,4,7,5,6}; //исходный массив e

tmas mas_e = {2,9,4,10,7,1,6,5,3,8}; //исходный массив f

int n;

setlocale(LC_ALL,"Russian");

cout << " Примеры методов сортировки массивов целых чисел" << endl;

cout << " Исходный массив а: " << endl;

outputmas(mas_a, RAZ);

cout << "\n Отсортированный массив а (метод обмена):" << endl;

sort_obmen(mas_a, RAZ);

outputmas(mas_a, RAZ);

cout << "\n Исходный массив b: " << endl;

outputmas(mas_b, RAZ);

cout<<"\n Отсортированный массив b (метод обмена с флагом):" <<endl;

sort_obmenF(mas_b, RAZ);

outputmas(mas_b, RAZ);

cout << "\n Исходный массив c: " << endl;

outputmas(mas_c, RAZ);

cout<<"\n Отсортированный массив c (метод выбора минимума):" <<endl;

sort_vibor(mas_c, RAZ);

outputmas(mas_c, RAZ);

cout << "\n Исходный массив d: " << endl;

outputmas(mas_d, RAZ);

cout << "\n Отсортированный массив d (метод вставки):" << endl;

sort_vstav(mas_d, RAZ);

outputmas(mas_d, RAZ);

cout << "\n Исходный массив e: " << endl;

outputmas(mas_e, RAZ);

cout<<"\nОтсортированный массив e (метод быстрой сортировки):"<<endl;

sort_quick(mas_e, 0, RAZ - 1);

outputmas(mas_e, RAZ);

return 0;

}

//сортировка элементов массива по возрастанию методом обмена без флага

void sort_obmen(tmas a, int n)

{ int i, k;

telem z;

for(k = n; k > 0; k--)

for(i = 0; i < k - 1; i++)

if(a[i] > a[i + 1])

{z = a[i];

a[i] = a[i + 1];

a[i + 1] = z;

}

}

//сортировка элементов массива по возрастанию методом обмена с флагом

void sort_obmenF(tmas a, int n)

{ int i, k, flag;

telem z;

k = n; //начальное количество не отсортированных элементов

do{flag = 0;

for(i = 0; i < k - 1; i++)

if(a[i] > a[i + 1])

{z = a[i];

a[i] = a[i + 1];

a[i + 1] = z;

flag = 1;

}

k--;

}while(flag);

}

//сортировка элементов массива по возрастанию методом выбора минимума

void sort_vibor(tmas a, int n)

{ int i, k, imin;

telem z;

for(i = 0; i < n - 1; i++)

{imin = i; //поиск очередного минимума

for(k = i + 1; k < n; k++)

if(a[k] < a[imin]) imin = k;

//перестановка элементов

z = a[i];

a[i] = a[imin];

a[imin] = z;

}

}

 

//сортировка элементов массива по возрастанию методом вставки

void sort_vstav(tmas a, int n)

{ int i, j, k;

telem z;

for(i = 1; i < n; i++)

{z = a[i]; //выделение текущего элемента

j = 0;

//поиск места вставки

while(j < i && a[j] <= a[i]) j++;

for(k = i - 1; k >= j; k--)

a[k + 1] = a[k]; //сдвиг элементов

a[j] = z;

}

}

//сортировка элементов массива по возрастанию методом быстрой сортировки

void sort_quick(tmas a, int t, int n)

{ int i = t, //левая граница сортируемого фрагмента

j = n; //правая граница сортируемого фрагмента

telem x, y;

x = a[(t + n) / 2];

do{

while(a[i] < x) i++;

while(x < a[j]) j--;

if(i <= j)

{y = a[i];

a[i] = a[j];

a[j] = y;

i++;

j--;

}

}while(i < j);

if(t < j) sort_quick(a, t, j);

if(i < n) sort_quick(a, i, n);

}

void outputmas(tmas a, int n)

{for(int i = 0; i < n; i++)

cout << a[i] << ' ';

}

 





Поделиться с друзьями:


Дата добавления: 2015-09-20; Мы поможем в написании ваших работ!; просмотров: 533 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Вы никогда не пересечете океан, если не наберетесь мужества потерять берег из виду. © Христофор Колумб
==> читать все изречения...

2358 - | 2156 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.