Загрузка...

Нужно сделать сортировку двухмерного массива через bubble sort

Тема в разделе C/C++ создана пользователем Metal_inactive 16 май 2019. 275 просмотров

Загрузка...
  1. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Всем привет, помогите пожалуйста уже два дня ламаю голову как сделать.Нужно отсортировать двухмерный масив с помощю bubble sort. Вот Код если с помощью циклов то отлично работает, а чере функицю просто 1 на вывод.
    Код

    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    using namespace std;
    void bubble(int** arr, int n , int m)
    {

    for (int k = 0; k <= (n*m); k++)
    {
    for(int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {
    if (i + 1 == n and j + 1 == m)
    {
    continue;
    }
    else {
    if (j + 1 == m and arr[i][j] > arr[i+1][0])
    {
    swap(arr[i][j], arr[i + 1][0]);
    }
    else
    {
    if(arr[i][j] > arr[i][j+1])
    {
    swap(arr[i][j],arr[i][j + 1]);
    }
    }

    }
    }
    }
    }
    }

    int main() {
    int n = 5, m = 8;
    int k = 4;
    int arr[n][m];
    srand(time(NULL));
    for (int i = 0; i < n; i++){ //заполнения масива
    for (int j = 0; j < m; j++)
    {
    arr[i][j] = rand()%100;
    }
    }
    cout << "Исходный масив" << endl;
    for (int i = 0; i < n; i++){ // вывод исходного масива
    for (int j = 0; j < m; j++)
    {
    cout << setw(k) << arr[i][j];
    }
    cout << endl;
    }

    // сортировка

    cout << "масив" << endl;
    for (int i = 0; i < n; i++){ // вывод отсортированого масива
    for (int j = 0; j < m; j++)
    {
    cout << setw(k) << bubble[i][j] ;
    }
    cout << endl;
    }

    return 0;
    }

     
    16 май 2019 Изменено
  2. DarkUnicorn
    DarkUnicorn 16 май 2019 Не учи меня жить. Лучше помоги материально. 84 2 апр 2019
    в чём проблема?
     
  3. DarkUnicorn
    DarkUnicorn 16 май 2019 Не учи меня жить. Лучше помоги материально. 84 2 апр 2019
    я сижу вчитываюсь и не могу понять нихера, объясни, что ты хочешь реализовать
     
  4. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Нужно сделать сортировку двухмерного массива с помощью bubble sort. Но когда программа запускается то на выходе 1 1 1 1

    [IMG]
     
  5. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Если делаю без функции то все отлично работает
     
  6. de9x
    de9x 16 май 2019 Frontend developer 141 3 янв 2019
    нихера не понятно. блять, вот зачем лолз добавлял
    Код
    , если ей никто не пользуется.
     
  7. de9x
    de9x 16 май 2019 Frontend developer 141 3 янв 2019
    p. s. просто вставь свой код в *SRC*тут код*/SRC*
    * - это квадратная скобка
     
  8. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Извиняюсь сейчас исправлю
     
  9. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Код

    #include <iostream>
    #include <iomanip>
    #include <cstdlib>
    using namespace std;
    void bubble(int** arr, int n , int m)
    {

    for (int k = 0; k <= (n*m); k++)
    {
    for(int i = 0; i < n; i++)
    {
    for (int j = 0; j < m; j++)
    {
    if (i + 1 == n and j + 1 == m)
    {
    continue;
    }
    else {
    if (j + 1 == m and arr[i][j] > arr[i+1][0])
    {
    swap(arr[i][j], arr[i + 1][0]);
    }
    else
    {
    if(arr[i][j] > arr[i][j+1])
    {
    swap(arr[i][j],arr[i][j + 1]);
    }
    }

    }
    }
    }
    }
    }

    int main() {
    int n = 5, m = 8;
    int k = 4;
    int arr[n][m];
    srand(time(NULL));
    for (int i = 0; i < n; i++){ //заполнения масива
    for (int j = 0; j < m; j++)
    {
    arr[i][j] = rand()%100;
    }
    }
    cout << "Исходный масив" << endl;
    for (int i = 0; i < n; i++){ // вывод исходного масива
    for (int j = 0; j < m; j++)
    {
    cout << setw(k) << arr[i][j];
    }
    cout << endl;
    }

    // сортировка

    cout << "масив" << endl;
    for (int i = 0; i < n; i++){ // вывод отсортированого масива
    for (int j = 0; j < m; j++)
    {
    cout << setw(k) << bubble[i][j] ;
    }
    cout << endl;
    }

    return 0;
    }
     
  10. de9x
    de9x 16 май 2019 Frontend developer 141 3 янв 2019
    ты балда
     
  11. de9x
    de9x 16 май 2019 Frontend developer 141 3 янв 2019
    Код
     [SRC]
    [/SRC]
     
  12. BlackNinja_inactive216139
    Код
    #include <stdio.h>

    void swap(int *xp, int *yp)
    {
    int temp = *xp;
    *xp = *yp;
    *yp = temp;
    }

    void bubbleSort(int arr[], int n)
    {

    int i, j;
    bool swapped;
    for (i = 0; i < n-1; i++)
    {
    swapped = false;
    for (j = 0; j < n-i-1; j++)
    {
    if (arr[j] > arr[j+1])
    {
    swap(&arr[j], &arr[j+1]);
    swapped = true;
    }
    }

    if (swapped == false)
    break;
    }
    }

    void printArray(int arr[], int size)
    {
    int i;
    for (i=0; i < size; i++)
    printf("%d ", arr[i]);
    printf("n");
    }
    int main()
    {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr)/sizeof(arr[0]);
    bubbleSort(arr, n);
    printf("Sorted array: \n");
    printArray(arr, n);
    return 0;
    }
     
  13. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    de9x, та все нормально)
     
  14. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Может быть, просто не особо на форумах сижу)
     
  15. DarkUnicorn
    DarkUnicorn 16 май 2019 Не учи меня жить. Лучше помоги материально. 84 2 апр 2019
    Metal_inactive, зачем так сложно? тебе нужна именно функция отдельная?
     
  16. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Сама функция отказывается работать хотелось бы понять почему.
     
  17. DarkUnicorn
    DarkUnicorn 16 май 2019 Не учи меня жить. Лучше помоги материально. 84 2 апр 2019
    Внимательно посмотри. У тебя одномерный массив. Почему у него сразу i и j
     
  18. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    Это двухмерный массив.Если я код функции просто вставлю между вводом и выводом, то всё работает.
     
  19. Metal_inactive
    Metal_inactive Автор темы 16 май 2019 0 24 авг 2017
    А я хочу сделать через функцию и не могу понять как, весь инет перерыл никакой полезной инофрмации
     
  20. DarkUnicorn
    DarkUnicorn 16 май 2019 Не учи меня жить. Лучше помоги материально. 84 2 апр 2019
Top