powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как это записать?
5 сообщений из 5, страница 1 из 1
как это записать?
    #32852876
kj3000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--------------
Сортировка выбором. Выбирается минимальный элемент в массиве и переносится в новый массив. Затем на его место записывается последний элемент исходного массива.
--------------


В программе не хватает нескольких строк

Как записать последний элемент на место минимального элемента в исходном массиве?

#include <stdio.h>
void sort(int A[],int n,int B[100])
{
int i,l,min=A[0],m=0,k=n;
for(l=0;l<k;l++)//цикл перебора всех чисел
{
for(i=0;i<n;i++)//поиск минимального элемента
{if (A <=min) {min=A;m=i;}}
B[l]=min;//запись мин. элемента в выходной массив
min=A[0];


?????????????????


}

}
void main()
{int i,n=7,A[100]={2,1,6,3,4,3,8},B[100];
sort(A,n,B);
for (i=0;i<n;i++)
printf("%d",B);

}
...
Рейтинг: 0 / 0
как это записать?
    #32853118
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
как-то так...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
// итератор исходных данных
// итератор вывода
template<class Iter, class Ouput>
void sort_choice( Iter begin, Iter end, Output back ){
 // нужно заюзать concept_check для проверки
 // operator <, operator = 
 // копирующий конструктор 

 Iter last( --end );

 for( Iter i = begin; i != end; ++i, *back = *last ){
  Iter min = std::min_element( i, end );
  std::swap( *last, *min );
 }
}

используется на массивах и контейнерах STL

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int *a, *b;
vector<int> c;
...
a = new int[ 100 ];
b = new int[ 100 ];

sort_choice( a, a+ 100 , std::back_inserter(c) );
sort_choice( c.begin(), c.end(), std::inserter(b) );
...
Рейтинг: 0 / 0
как это записать?
    #32853129
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dwlкак-то так...

ИМХО я бы не стал подбрасывать парню проблем. Ведь он просил всего-лишь добавить несколько строк. А ты предложил свою собственную реализацию. Для человека который изучает сортирующие алгоритмы это не помошь.
...
Рейтинг: 0 / 0
как это записать?
    #32853130
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
соврал, слишком торопился. надо двигаться от конца. Хотя тот же алго можно юзать на рекурсивных итераторах, тогда отпадают массивы, но можно написать и специализацию. А можно и так...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
template<class Iter, class Ouput>
void sort_choice( Iter begin, Iter end, Output back ){

 // для пустого массива добавил проверку
 if ( begin != end ){
   Iter i(end);

   do{
      Iter min = std::min_element( begin, i );
      *back = *min;
      std::swap( *(--i), *min );
   } while( i != begin );
 }
}
...
Рейтинг: 0 / 0
как это записать?
    #32853132
dwl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
dwl
Гость
ну извините...
за лишние проблемы
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как это записать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]