Сортировка динамического массива (исправить код) - C (СИ)
Формулировка задачи:
Здравствуйте. Написал программу, которая должна сортировать динамический массив. Но она его не сортирует, а выдаёт все элементы по порядку, причём, когда массив статический, всё работает корректно, подскажите, в чем дело.
Заранее спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
double *t;
int i,n, j,tmp;
printf("\n n=");
scanf("%d", &n);
t=(double *)malloc(n*sizeof(double));
printf(" Isxodny massiv:\n ");
for ( i=0; i<n; i++)
{printf("x[%d]=",i);
scanf("%lf", &t[i]);}
printf("\n");
for ( i=0; i<n; i++)
for ( j=i+1; j<n; j++)
if( i > j )
{
tmp=i;
i=j;
j=tmp;
}
printf(" Sorted massiv:\n ");
for ( i=0; i<n; i++)
printf("\t x[%d]=%lf", i, t[i]);
free(t);
getch();
}Решение задачи: «Сортировка динамического массива (исправить код)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
double *t;
int i,n, j,tmp;
printf("\n n=");
scanf("%d", &n);
t=(double *)malloc(n*sizeof(double));
printf(" Isxodny massiv:\n ");
for ( i=0; i<n; i++)
{
printf("x[%d]=",i);
scanf("%lf", &t[i]);
}
printf("\n");
for ( i=0; i<n; i++)
for ( j=i+1; j<n; j++)
if( t[i] > t[j] )
{
tmp=t[i];
t[i]=t[j];
t[j]=tmp;
}
printf(" Sorted massiv:\n ");
for ( i=0; i<n; i++)
printf("\t x[%d]=%lf", i, t[i]);
free(t);
getch();
}