КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сортировка массивов
Задачи 4-ого класса Задачи 3-ого класса Задачи 2-ого класса Задачи 1-ого класса Классы задач по обработке массивов Перебор массива по два элемента 1) Элементы массива можно обрабатывать по два элемента, двигаясь с обеих сторон массива к его середине: {обработка a[I] и a[J];I++;J--;}
2) Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 1(т. е. обрабатываются пары элементов a[1]и a[2], a[2]и a[3] и т. д.): 3) Элементы массива можно обрабатывать по два элемента, двигаясь от начала к концу с шагом 2 (т. е. обрабатываются пары элементов a[1]и a[2], a[3]и a[4] и т. д.)
1) К задачам 1 класса относятся задачи, в которых выполняется однотипная обработка всех или указанных элементов массива. 2) К задачам 2 класса относятся задачи, в которых изменяется порядок следования элементов массива. 3) К задачам 3 класса относятся задачи, в которых выполняется обработка нескольких массивов или подмассивов одного массива. Массивы могут обрабатываться по одной схеме – синхронная обработка или по разным схемам – асинхронная обработка массивов. 4) К задачам 4 класса относятся задачи, в которых требуется отыскать первый элемент массива, совпадающий с заданным значением – поисковые задачи в массиве. Решение таких задач сводится к установлению того, как обрабатывается каждый элемент массива или указанные элементы, затем подбирается подходящая схема перебора, в которую вставляются операторы обработки элементов массива. Примером такой задачи является нахождение максимального элемента массива или среднего арифметического массива. #include<iostream.h> #include<stdlib.h> void main() { int a[100]; int n; cout<<”\nEnter the size of array:”;cin>>n; for(int I=0;I<n;I++) {a[I]=rand()%100-50; cout<<a[I]<<” “; } int Sum=0; for(I=0;I<n;I++) Sum+=a[I]; Cout<<”Среднее арифметическое=”<<Sum/n”; } Обмен элементов внутри массива выполняется с использованием вспомогательной переменной: Пример1. Перевернуть массив. //формирование массива for(int i=0,j=n-1;i<j;i++,j--) {int r=a[i]; a[i]=a[j]; a[j]=r;} //вывод массива Пример 2. Поменять местами пары элементов в массиве: 1и2, 3 и 4, 5 и 6 и т. д. for(int i=0;i<n-1;i+=2) {int r=a[i]; a[i]=a[i+1]; a[i+1]=r;} Пример 3. Циклически сдвинуть массив на к элементов влево (вправо). int k,i,t,r; cout<<"\nK=?";cin>>k;
for(t=0;t<k;t++) { r=a[0]; for(int i=0;i<n-1;i++) a[i]=a[i+1]; a[n-1]=r; } При синхронной обработке массивов индексы при переборе массивов меняются одинаково. Пример 1. Заданы два массива из n целых элементов. Получить массив c, где c[I]=a[I]+b[I]. For(int I=0;I<n;I++)c[I]=a[I]+b[I]; При асинхронной обработке массивов индекс каждого массива меняется по своей схеме. Пример 2. В массиве целых чисел все отрицательные элементы перенести в начало массива. int b[10];//вспомогательный массив int i,j=0; for(i=0;i<n;i++) if(a[i]<0){b[j]=a[i];j++;}//переписываем из а в b все отрицательные элементы for(i=0;i<n;i++) if(a[i]>=0){b[j]=a[i];j++;}// переписываем из а в b все положительные элементы for(i=0;i<n;i++) cout<<b[I]<<” “; Пример3. Удалить из массива все четные числа int b[10]; int i,j=0; for(i=0;i<n;i++) if(a[i]%2!=0){b[j]=a[i];j++;}
for(i=0;i<j;i++) cout<<b[i]<<" "; cout<<"\n"; В поисковых задачах требуется найти элемент, удовлетворяющий заданному условию. Для этого требуется организовать перебор массива и проверку условия. Но при этом существует две возможности выхода из цикла: - нужный элемент найден; - элемент не найден, но просмотр массива закончен. Пример1. Найти первое вхождение элемента К в массив целых чисел. int k; cout<<"\nK=?";cin>>k; int ok=0;//признак найден элемент или нет int i,nom; for(i=0;i<n;i++) if(a[i]==k){ok=1;nom=i;break;} if(ok==1) cout<<"\nnom="<<nom; else cout<<"\nthere is no such element!"; Сортировка – это процесс перегруппировки заданного множества объектов в некотором установленном порядке. Сортировки массивов подразделяются по быстродействию. Существуют простые методы сортировок, которые требуют n*n сравнений, где n – количество элементов массива и быстрые сортировки, которые требуют n*ln(n) сравнений. Простые методы удобны для объяснения принципов сортировок, т. к. имеют простые и короткие алгоритмы. Усложненные методы требуют меньшего числа операций, но сами операции более сложные, поэтому для небольших массивов простые методы более эффективны. Простые методы подразделяются на три основные категории: - сортировка методом простого включения; - сортировка методом простого выделения; - сортировка методом простого обмена;
Дата добавления: 2014-01-04; Просмотров: 534; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |