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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
//clang Сортировка двумерного массива #include <iostream> #include <ctime> #include <cstdlib> #include <algorithm> using namespace std; int main () { const int ROW = 3; //Строки массива const int COL = 4; //Колонки массива int arr[ROW][COL]; //Двумерный массив int count_ = ROW * COL; //для заполнения массива числами по порядку int temp = 0; srand(time(0u)); //Для генератора случайных чисел /*ЗАПОЛНЕНИЕ ДВУМЕРНОГО МАССИВА*/ for (int i=0; i<ROW; i++){ for (int j = 0; j<COL; j++){ //arr[i][j] = rand() % 100 + 1; //Так можно задавать random arr[i][j] = count_ --; //заполнение в порядке убывания } } /*КОНЕЦ ЗАПОЛНЕНИЯ ДВУМЕРНОГО МАССИВА*/ /*ВЫВОД ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/ cout << "original:\n"; for (int i = 0; i<ROW; i++){ for (int j = 0; j<COL; j++){ cout.width(5); cout << arr[i][j]; } cout << '\n'; } /*КОНЕЦ ВЫВОДА ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/ /*СОРТИРОВКА ДВУМЕРНОГО МАССИВА*/ cout << "\n\nsorted:\n"; for (int m=0; m<(ROW * COL - 1); m++) //сдвиги очередных элементов в правильную позицию /*сдвиг элемента массива в правильную позицию*/ for (int i = 0; i<ROW ; i++){ for (int j = 0; j<COL; j++){ /*АНАЛИЗ НА ПОСЛЕДНИЙ ЭЛЕМЕНТ МАССИВА*/ if (i==ROW-1 && j==COL-1){ //Если строка последняя и справа тупик, то ничего не делаем continue; } /*КОНЕЦ АНАЛИЗА НА ПОСЛЕДНЮЮ СТРОКУ*/ if (arr[i][j] > arr[i][j+1]){ //Если элемент не на своей позиции temp = arr[i][j]; //Обмен местами arr[i][j] = arr[i][j+1]; arr[i][j+1] = temp; } } } /*КОНЕЦ СОРТИРОВКИ ДВУМЕРНОГО МАССИВА*/ /*ВЫВОД ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/ for (int i = 0; i<ROW; i++){ for (int j = 0; j<COL; j++){ cout.width(5); cout << arr[i][j]; } cout << '\n'; } /*КОНЕЦ ВЫВОДА ЗНАЧЕНИЙ ДВУМЕРНОГО МАССИВА НА ЭКРАН*/ std::cin.get(); } |
Для Borland C++ 3.1 код слегка отличается, если кому надо, раскройте спойлер
Добавить комментарий