Ошибочный алгоритм сортировки в С++

-4

Так. Я попытался написать алгоритм, который сортирует элементы массива следующим образом: элементы, меньшие, чем число, указанное (называемое "a"), должны быть первыми, а после них элементы, больше или равные числу, называемому "a "и даны в консоли. Он компилируется и работает, но не так хорошо. Это должно привести к ужасному результату, и я не могу понять, почему. Благодаря !

PS: Извините, если у меня что-то написано неправильно или я забыл что-то добавить.

#include <iostream>
#include <iomanip>

using namespace std;

void MaiMici(int n, int s[], int a)
{
int i,j;
i=j=1;
int temp;
while(j<=n)
{
if (s[j]>a)
j=j++;
else
temp=s[i];
s[i]=s[j];
s[j]=temp;
i=i++;
j=j++;
}
}

int main()
{
int s[100], n,a;

cout<<"Da numarul a:";
cin>>a;
cout<<"Da dimensiunea: "; cin>>n;
cout<<"Da vectorul: "<<endl;
for(int i=1;i<=n;i++)
{
cout<<"Da s["<<i<<"]=";
cin>>s[i];
}

MaiMici(n,s,a);
for(int i=1;i<=n;i++)
{
cout<<setw(2)<<s[i];
}
cout<<endl<<"Program terminat";

return 1;
}

спросил(а) 2014-11-10T22:35:00+03:00 6 лет назад
0
82

По крайней мере, сейчас он что-то делает, и он фиксирует кучу ваших проблем. Тем не менее, не совсем точно, какое поведение вы ищете от этого.

#include <iostream>
#include <iomanip>

using namespace std;

void MaiMici(int n, int s[], int a) {
int i = 1;
int j = 1;
int temp;

while(j <= n) {
if (s[j] > a)
j++;
else {
temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j++;
}
}
}

int main() {
int s[100], n,a;

cout<<"Da numarul a:";
cin>>a;
cout<<"Da dimensiunea: ";
cin>>n;
cout<<"Da vectorul: " << endl;

for(int i=0;i<n;i++) {
cout << "Da s[" << i << "]=";
cin >> s[i];
}

MaiMici(n,s,a);
for(int i=0;i<n;i++) {
cout << setw(2) << s[i];
}
cout << endl << "Program terminat";

return 0;
}

ответил(а) 2014-11-10T22:44:00+03:00 6 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема