Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2022, 21:36   #1
Yuldosh
Новичок
Джуниор
 
Регистрация: 12.07.2022
Сообщений: 3
По умолчанию SelectionSort

Здравствуйте, Уважаемые знатоки! мне 67 лет, проучился на курсах "foundation". Xотел бы получить более глубокие познания в этой области науки.
Имею программу на С++ :
include <iostream>
using namespace std;
void selectionSort (int arr[],int arrSize){
int min_idx;
int i=0;
for(int i =0; i<arrSize-1;i++)
{
min_idx = i;
for(int j =i+1; j < arrSize; j++)
if(arr[j]<arr[min_idx])
min_idx = j;
std::swap(arr[i],arr[min_idx]);
}

}
void printArray(int arr[],int arrSize){
for(int i =0; i<arrSize;i++){

std::cout << arr[i]<< " ";
}

}
int main()
{
constexpr int arrSize=10;
int arr[arrSize] {2,1,18,14,28,17,99,77,88,100};
selectionSort(arr,arrSize);
printArray(arr,arrSize);
return 0;
}

хотел чуть переделать вводя функцию "random" и вводить цифры каждый раз случайные и получить провильно от сортированные

srand(time(NULL));
int arrSize = 10;
int ratings[arrSize];
for(int i =0; i<arrSize; i++)
{
ratings[i] = rand()%10;
совместить не получается помогите пожалуйста, как можно подробнее

Последний раз редактировалось Yuldosh; 09.08.2022 в 21:41.
Yuldosh вне форума Ответить с цитированием
Старый 09.08.2022, 21:44   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Используйте для кода теги [CODE][/CODE] или читать текст невозможно.
А чего не получается?
Код:
#include <iostream>
//Даже не стоит начинать использовать
//using namespace std;
void selectionSort (int arr[],int arrSize)
{
   for(int i=0;i<arrSize-1;i++)
   {
      int m=i; // min_idx - долго печатать
      for(int j=i+1;j<arrSize;j++)
         if(arr[j]<arr[m])
            m=j;
// добавили условие (зачем менять местами самого себя)
      if (i!=m) std::swap(arr[i],arr[m]);
   }
}

// Убрал лишние пробели и скобочки
void printArray(int arr[],int arrSize) {for(int i =0;i<arrSize;i++) std::cout<< arr[i]<<" ";}

int main()
{
   constexpr int arrSize=10;
   int arr[arrSize];
// вставляем
   srand(time(NULL));
//комментируем повторяющиеся строки
//int arrSize=10;
//int ratings[arrSize];
   for(int i =0;i<arrSize;i++)
      arr[i]=rand()%10; // изменяем имя массива с ratings на arr
// ------ конец
   selectionSort(arr,arrSize);
   printArray(arr,arrSize);
   return 0;
}
Вот тут можно посмотреть на результат

Последний раз редактировалось macomics; 09.08.2022 в 21:58. Причина: Добавил ссылку на онлайн-компилятор
macomics вне форума Ответить с цитированием
Старый 12.08.2022, 18:03   #3
Yuldosh
Новичок
Джуниор
 
Регистрация: 12.07.2022
Сообщений: 3
По умолчанию

Благодарю за ответ, ответ полный.
Yuldosh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск