Professional Documents
Culture Documents
Лекція
Лекція
Array
Всі масиви C# є нащадками класу System.Array у якого є ряд
корисних властивостей та методів. Наприклад властивість:
Length – повертає кількість елементів масиву;
Rank – повертає розмірність масиву (1 для одновимірного і т.д.).
Тепер розглянемо приклад програми для виводу на єкран масиву за
допомогою циклу for:
using System;
class Program {
static void Main() {
int[] arr = { 1, 3, 5, 8, 2 };
for (int i = 0; i < arr.Length; i++) {
Console.WriteLine("arr[{0}]={1}", i,
arr[i]);
}
Console.ReadKey();
}
}
Ця програма виведе на екран наступне:
arr[0]=1
arr[1]=3
arr[2]=5
arr[3]=8
arr[4]=2
1
IndexOf(),LastIndexOf() – відповідно шукають перше та
останнє входження елементу в масив;
Sort() – сортує одновимірний масив за зростанням;
BinarySearch() – швидкий пошук в сортованому масиві;
Reverse() – змінює порядок слідування елементів масиву на
протилежний.
Розглянемо приклад:
using System;
class Program {
static void Main() {
int[] arr = { 1, 8, 5, 3, 2 };//створимо масив
//створимо копію
int[] arrNew = (int[])arr.Clone();
Array.Sort(arrNew); //відсортуємо масив
for (int i = 0; i < arrNew.Length; i++) {
//виведемо відсортовані значення
Console.WriteLine(
"arrNew[{0}]={1}", i, arrNew[i]
);
}
Console.ReadKey();
}
}
результатом роботи програми буде:
arrNew[0]=1
arrNew[1]=2
arrNew[2]=3
arrNew[3]=5
arrNew[4]=8
Завдання
Алгоритм "Сортування вибором"
Реалізація алгоритму сортування вибором C#
Програма сортування масиву C# вибором
Збираємо масив цілих чисел
Виводимо невідсортований масив у консоль
Сортуємо масив, використовуючи алгоритм «Сортування вибором» та
показуємо результат
Результат роботи програми
2
Вихідний код програми
Разом
На даний момент у нас вже вистачає знань, щоб спробувати написати найпростішу
програму C#. Але найпростіша — не означає марна. Наша програма буде сортувати
масив C# . При написанні різних програм нам часто доводиться стикатися з таким
поняттям, як сортування. Наприклад, необхідно відсортувати список людей за
алфавітом або сортувати оцінки учнів за зростанням. І для того, щоб максимально
ефективно вирішити таке завдання, ми повинні знати не тільки саму мову
програмування, а й алгоритми сортування — їх складність, як вони реалізуються
на практиці і таке інше. Сьогодні ми розглянемо найпростіший алгоритм сортування
масиву C# - сортування вибором.
Завдання
Р ЕК Л АМ А
Користувач вводить з клавіатури цілі числа розділені комою. Програма повинна
зібрати з цих чисел масив та відсортувати його за зростанням.
У консоль програма виведе невідсортований та відсортований масиви.
Алгоритм "Сортування вибором"
Цей алгоритм є одним із найпростіших алгоритмів сортування масиву. Його сенс
полягає в тому, щоб, щоб йти масивом, наприклад зліва направо, щоразу шукати
мінімальний елемент масиву і обмінювати його з першим елементом
невідсортованої частини масиву. Кроки алгоритму можна представити так:
3
індекс у масиві
}
}
if ( intArray [ indx ] == intArray [ i ]) //якщо мінімальний елемент дорівнює
поточному значенню - нічого не міняємо
continue ;
//Змінюємо місцями мінімальний елемент і перший у невідсортованій частині
int temp = intArray [ i ] ; //Тимчасова змінна, щоб не втратити значення intArray [i]
intArray [ i ] = intArray [ indx ] ;
intArray [ indx ] = temp;
}
Перевірити роботу алгоритму нам допоможе невелика консольна програма C#, яку
ми зараз і напишемо.
using System;
namespace SelectSort
{
class Program
{
static void Main ( string [] args )
{
Console. WriteLine ( " Введіть через кому цілі числа і натисніть Enter" ) ;
5
string [ ] nums = Console. ReadLine () . Split ( new char [] { ',' }) ;
int [ ] intArray = new int [ nums. Length ] ;
for ( int i = 0 ; i < nums. Length ; i ++ )
{
intArray [ i ] = int. Parse ( nums [ i ]) ;
}
Console. WriteLine ( " Невідсортований масив : " ) ;
foreach ( int value in intArray )
{
Console. Write ( $ "{ value }" ) ;
}
int indx ; //змінна для зберігання індексу мінімального елемента масиву
for ( int i = 0 ; i < intArray. Length ; i++ ) //проходимо по масиву з початку до кінця
{
indx = i; //вважаємо, що мінімальний елемент має поточний індекс
for ( int j = i; j < intArray. Length ; j++ ) //Шукаємо мінімальний елемент у
невідсортованій частині
{
if ( intArray [ j ] < intArray [ indx ])
{
indx = j; //знайшли в масиві число менше, ніж intArray [ indx ] - запам'ятовуємо його
індекс у масиві
}
}
if ( intArray [ indx ] == intArray [ i ]) //якщо мінімальний елемент дорівнює
поточному значенню - нічого не міняємо
continue ;
//Міняємо місцями мінімальний елемент і перший у невідсортованій частині
int temp = intArray [ i ] ; //Тимчасова змінна, щоб не втратити значення intArray [i]
intArray [ i ] = intArray [ indx ] ;
intArray [ indx ] = temp;
}
Console. WriteLine ( "\r\ n Відсортований масив:" ) ;
foreach ( int value in intArray )
{
Console. Write ( $ "{ value }" ) ;
}
}
}
}