#33. Операции с массивами копирование, вставка, удаление и сортировка | Язык C для начинающих

Поделиться
HTML-код
  • Опубликовано: 6 май 2023
  • Практический курс по C/C++: stepik.org/course/193691/
    Телеграм-канал: t.me/java_and_c
    Инфо-сайт: proproprogs.ru/c_base
    Алгоритмы копирования массивов, вставки значений в произвольный элемент, удаления значения из произвольного элемента и сортировка массива методом вставок.

Комментарии • 26

  • @dkwerk2711
    @dkwerk2711 Год назад +3

    Не смотрел данный ролик, но зашел именно на последний, чтобы выразить благодарность за Курсы по ООП пайтон и алгоритмы)

  • @andredru4278
    @andredru4278 5 месяцев назад +1

    Спасибо. Все понятно. Нравится подведение итогов под каждым занятием.

  • @vladimirastrelin1719
    @vladimirastrelin1719 Год назад +1

    Спасибо ! Прекрасный урок. Ясное мышление, доходчивое изложение

  • @MK-xf9kg
    @MK-xf9kg 2 месяца назад +2

    сдвигаемся влево, рисуя стрелочку вправо....🤔.
    А так то курс зачетный.

  • @jamjam3337
    @jamjam3337 11 месяцев назад +2

    спасибо!👏👍

  • @avr_stm_pro2955
    @avr_stm_pro2955 Год назад +3

    спасибо !!!

  • @trimo1120
    @trimo1120 6 месяцев назад +1

    Познавательное видео. Конечно, можно было использовать динамические массивы, а то получается, что последний элемент удаляется при вставке, а так спасибо!

  • @alex1vere2
    @alex1vere2 Месяц назад +1

    вправо

  • @user-xm5zl9up4r
    @user-xm5zl9up4r 4 месяца назад +1

    спасибо

  • @stolebyte2104
    @stolebyte2104 7 месяцев назад +2

    // Сортировка массива - Метод пузырька
    #include
    int main(void)
    {
    int ar[]={-3,5,0,-8,1,10};
    int size = sizeof(ar)/sizeof(*ar);
    int t;
    for (int i=0;ii;--j){
    if (ar[j]

  • @electronic008
    @electronic008 Год назад +1

    Альтернативный способ копирования элементов массива из одного в другой - при помощи стандартной функции memcpy(). Она работает быстрее, чем цикл for {}
    Т.е. если массивы не являются строковыми массивами, используйте: memcpy(array2, array1, sizeof(array2)).
    (Для строк рекомендуемым способом является использование strncpy() )

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      функции strcpy() и strnspy() копируют не весь массив, а только до символа '\0' (включая его)

    • @electronic008
      @electronic008 Год назад +1

      @@selfedu_rus
      Функции strcpy() и strnspy() - для строк.
      А для других значений (числовых), при копировании буфера (массива) вместо цикла for {} можно использовать функцию стандартной библиотеки memcpy() (это альтернативный способ копирования массивов и он работает быстрее)

    • @user-in9mx5ex9z
      @user-in9mx5ex9z 11 месяцев назад

      Спасибо большое 👍🏻

    • @electronic008
      @electronic008 11 месяцев назад

      @@user-in9mx5ex9z
      С помощью функции memcpy() можно также осуществлять вставку и удаление, то есть не перемещать/копировать значения поэлементно в цикле for() а смещать целыми блоками (блок ОТ и ДО) на нужные позиции. Это работает быстрее можно вставлять/удалять не один элемент, а сразу несколько.

  • @donfedor007
    @donfedor007 Год назад +1

    Нет стандартных функций сортировки? Типа как в питоне sorted?

    • @selfedu_rus
      @selfedu_rus  Год назад +1

      есть, qsort()

    • @donfedor007
      @donfedor007 Год назад

      @@selfedu_rus спасибо, надо будет попробовать

  • @donfedor007
    @donfedor007 Год назад +1

    Доброе время суток! Не надо последний элемент заменить на 0, если не все нули? Ведь он за двоится
    если такой массив int marks[TOTAL_MARKS] = {1,2,3,4,5,6,7,8,9, 10};

    • @selfedu_rus
      @selfedu_rus  Год назад +2

      нет, не нужно, обычно заводится еще одна переменная, которая хранит число фактически записанных данных в массив

    • @donfedor007
      @donfedor007 Год назад

      @@selfedu_rus спасибо

    • @electronic008
      @electronic008 Год назад

      @@selfedu_rus
      лучше так, да, с помощью дополнительной переменной-счетчика

  • @lindx2533
    @lindx2533 Год назад +1

    а почему бы просто не делать swap?

    • @electronic008
      @electronic008 Год назад

      В C нет стандартной функции для замены двух переменных. Тем более, все равно элементы массива надо сдвигать в цикле. никакой swap() здесь не поможет.

    • @lindx2533
      @lindx2533 Год назад

      @@electronic008 ты можешь её написать .

    • @electronic008
      @electronic008 Год назад

      @@lindx2533
      Я к тому, что она там не нужна! там все равно циклический сдвиг нужен. Можно, конечно, и в цикле, ее использовать, но зачем такой огород?