Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Сортировка с помощью включенияСодержание книги
Поиск на нашем сайте
Элементы массива делятся на уже готовую последовательность и исходную. При каждом шаге, начиная с I=2, из исходной последовательности извлекается i-ый элемент и вставляется на нужное место готовой последовательности, затем i увеличивается на 1 и т. д. В процессе поиска нужного места осуществляются пересылки элементов больше выбранного на одну позицию вправо, т. е. выбранный элемент сравнивают с очередным элементом отсортированной части, начиная с j:=i-1. Если выбранный элемент больше a[i], то его включают в отсортированную часть, в противном случае a[j] сдвигают на одну позицию, а выбранный элемент сравнивают со следующим элементом отсортированной последовательности. Процесс поиска подходящего места заканчивается при двух различных условиях: - если найден элемент a[j]>a[i]; - достигнут левый конец готовой последовательности.
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;//вставка элемента } Сортировка методом простого выбора Выбирается минимальный элемент массива и меняется местами с первым элементом массива. Затем процесс повторяется с оставшимися элементами и т. д.
int i,min,n_min,j; for(i=0;i<n-1;i++) { min=a[i];n_min=i;//поиск минимального for(j=i+1;j<n;j++) if(a[j]<min) { min=a[j]; n_min=j; } a[n_min]=a[i];//обмен a[i]=min; }
Сортировка методом простого обмена Сравниваются и меняются местами пары элементов, начиная с последнего. В результате самый маленький элемент массива оказывается самым левым элементом массива. Процесс повторяется с оставшимися элементами массива.
for(int i=1;i<n;i++) for(int j=n-1;j>=i;j--) if(a[j]<a[j-1]) { int r=a[j]; a[j]=a[j-1]; a[j-1]=r;} }
ПРИМЕР //2. Дан одномерный массив, состоящий из N целочисленных элементов. //2.1.Заполнить массив случайными числами. //2.2.Найти минимальный элемент. //2.3.Вычислить сумму элементов массива. //2.4.Вывести положительные элементы на экран. //2.5.Отсортировать массив по убыванию и вывести на экран #include <iostream> #include <time.h>
using namespace std; int main() { setlocale(LC_ALL, "Russian"); const int MAX_SIZE = 100; int mas[MAX_SIZE]; //1. формирование массива с помощью датчика случайных чисел int n, m, k, g, i, j, x; cout << "\nВведите размер массива < " << MAX_SIZE << ": "; cin >> n; srand((unsigned)time(NULL)); //Запуск генератора случайных чисел for (i = 0; i < n; i++) mas[i] = rand() % 100 - 50;
//Печать полученного массива cout << "1. Печать массива:\n"; for (i = 0; i<n; i++) cout << " " << mas[i];
//2. поиск минимального элемента k = 0; int iMin = mas[0]; for (i = 1; i<n; i++) { if (iMin > mas[i]) iMin = mas[i]; k++; } cout << "\n\n2.Минимальный элемент равен " << iMin << endl;
//3.Вычислить сумму элементов массива. int S = 0; for (i = 0; i < n; i++) S += mas[i]; cout << "\n3.Сумма эл-ов масива = " << S << endl;
//4.Вывести положительные элементы на экран. cout << "\n4. Список положительных элементов: "; for (i = 0; i < n; i++) if (mas[i] > 0) cout << mas[i] << "; ";
//5.Отсортировать массив по убыванию и вывести на экран cout << "\n\n5.Сортировка массива по убыванию (сортировка с помощью включения):"; for (i = 1; i<n; i++) { x = mas[i];//запомнили элемент, который будем вставлять j = i - 1; while (x>mas[j] && j >= 0)//поиск подходящего места { mas[j + 1] = mas[j];//сдвиг вправо j--; } mas[j + 1] = x;//вставка элемента } for (i = 0; i<n; i++) cout << " " << mas[i]; cout << endl; system("pause"); return 0; }
Лабораторная работа № 6. Массивы Цель и порядок работы Цель работы – получение практических навыков алгоритмизации и программирования вычислительных процессов с использованием массивов.
Порядок выполнения работы: - ознакомиться с описанием лабораторной работы; - получить задание у преподавателя, согласно своему варианту; - написать программу и отладить ее на ЭВМ; - оформить отчет.
Контрольные вопросы 1. Как определить массив? 2. Как проинициализировать массив? 3. Какие варианты объявления с инициализацией вы знаете? 4. Как обратиться к элементу массива? 5. Как объявить многомерный массив? 6. Как проинициализировать многомерный массив? 7. Как определить размер одномерного массива, зная его имя? Задание 1. Написать программу в соответствии с вариантом задания 2. Отладить и протестировать программу. 3. Написать программу в соответствии с вариантом. 4. Отладить и протестировать программу. 5. Оформить отчёт.
Варианты заданий
|
||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-11; просмотров: 398; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.219.253.199 (0.01 с.) |