Я следовал алгоритму подсчета и реализовал его на C++, но результат не соответствует требованиям. Это должен вывести 35 60 81 98.Подсчет алгоритма сортировки в C++ незначительной ошибке
Алгоритм подсчета
1. for i=0 to n-1 do
2. count[i] = 0
3. end for
4. for i =0 to n-2 do
5. for j = i+1 to n-1 do
6. if A[i] < A[j]
7. count[j] = count[j] +1
8. else count[i] = count[i] +1
9. end if
10. end for
11. end for
12. for I = 0 to n-1
13. S[count[i]] = A[i]
14. End for
15. Return S
Реализован код
int main(){
int A[4] = {60, 35, 81, 98};
int count[4], S[5];
int i, n=4, j;
system("cls");
for(i=0; i<n-1; i++){
count[i] = 0;
}
for(i=0; i<n-2; i++){
for(j=i+1; j<n-1; j++){
if(A[i] < A[j]){
count[j] = count[j] + 1;
}else{
count[i] = count[i] + 1;
}
}
}
for(i=0; i<n-1; i++){
S[count[i]] = A[i];
}
for(i=0; i<n; i++){
cout << S[i] << endl;
}
getchar();
}
Выход
Где я ошибся? Последнее число неверно. Пожалуйста помоги!
похоже, что вы теряете последнюю запись, которая заменяется на мусорную ценность! – CinCout
@binaryBaBa да, это так. Какие-либо предложения? – Moorani
'0 до n-1' является инклюзивным диапазоном. В C вы используете полуоткрытые диапазоны, поэтому условие становится 'i