Сортировка выбора с заменой двух элементов
Поэтому вместо того,чтобы найти только минимум, я должен найти минимальное значение и второе минимальное значение и сохранить его в нужном месте.
мой код работает не во всех случаях
например
#include <iostream> void AdvancedSelectionSort(int data[], int n) { for(int i=0;i<n-1;i=i+2){ int smallest,secondsmallest; smallest=i; secondsmallest=i+1; for(int j=i+1;j<n;j++) { if(data[j]<=data[smallest]){ secondsmallest=smallest; smallest=j;} else if(data[j]<=data[secondsmallest]) secondsmallest=j; } if(secondsmallest!=(i+1)) Swap(data[i+1],data[secondsmallest]); if(smallest!=i) Swap(data[i],data[smallest]); } } int main(){ int x[10]=[2,5,8,7,9,12,88,74,3,10] AdvancedSelectionSort(x,10); for(int i=0;i<10;i++) cout<<x[i]<<" "; }
Что я уже пробовал:
аннулировать своп(инт &усилителя;телевизор,инт&усилителя;б)
{int temp=a;
a=b;
b=температура;}
void AdvancedSelectionSort(int data [], int n)
{
для(int i=0;i< n-1;i=i+2){
int самый маленький, второй по величине;
маленький=я;
secondsmallest=i+1;
for (int j=i+1;j< n; j++)
{
if (data[j]<=data[наименьший]){
secondsmallest=наименьший;
наименьший=j;}
else if (data[j]<=data[secondsmallest])
secondsmallest=Дж;
}
если (secondsmallest!=(i+1))
Swap (data[i+1], data[secondsmallest]);
если (наименьший!=i)
Swap (data[i], data[наименьший]);
}
}
0x01AA
Если отсортировать список данных, то можно получить минимум второй, и третий, и третий...
В чем проблема?
Member 13067828
его сортировка не всегда корректна
Patrice T
Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Объясните это и приведите примеры данных (входных и выходных, которые демонстрируют проблему.
Обновите свой код до полной функции, чтобы мы могли его запустить.
Member 13067828
Я обновил эту функцию
Member 13067828
что касается примера
он не сортирует этот массив x[8]={2,7,9,5,6,7,8,10};
выход 2 5 6 7 8 9 7 10