no se puede imprimir la matriz de estructura ordenada en c

struct student
{
    int rollno;
    char name[50];
    float marks;
} s[20];

int main()
{
    // struct stud s[10];
    int n, i, j, c, l, temp, index = 1;

    printf("\nEnter the no. of Students: ");
    scanf("%d", &n);

    for (i = 0; i < n; i++) //getting data for structure variables
    {
        printf("Enter Name of Student %d: ", index);
        // scanf("%[^\t]", nam[i]);
        scanf("%[^\t^]s", s[i].name);
        printf("Enter Roll No. of Student %d: ", index);
        scanf("%d", &s[i].rollno);
        printf("Enter Marks of Student %d: ", index);
        scanf("%f", &s[i].marks);
        index++;
    }

    printf("\nData Before Sorting: \n"); //printing unsorted data

    printf("\n\tName\t|\tRoll No.|\tMarks\n");
    printf("\t----------------------------------\n");
    for (i = 0; i < n; i++)
    {
        printf("\t%s\t|\t%d\t|\t%f\n", s[i].name, s[i].rollno, s[i].marks);
    }

    do
    {
        printf("\nEnter choice for Sorting the Data\n1.Quick Sort\t2.Merge Sort\t3.Exit\n\n");
        scanf("%d", &c);

        switch (c)
        {
        case 1:

            quickSort(s, 0, n - 1);

            printf("\nData is sorted using Quick Sort: \n");

            break;

        case 2:

            mergeSort(s, 0, n - 1);

            printf("\nData is sorted using Merge Sort: \n");

            break;

        case 3:
            exit(1);

        default:
            printf("Wrong input");
        }

        for (i = 0; i < n; i++)
        {
            for (j = 0; j < n; j++)
            {
                if (s[i].rollno == s[j].rollno)
                {
                    printf("\nName : %s\tRoll No. : %d\tMarks : %f", s[i].name, s[j].rollno, s[i].marks);
                }
            }
            j++;
        }

        // for (i = 0; i < n; i++)
        // {
        //     printf("\nName : %s\tRoll No. : %d\tMarks : %f", s[i].name, s[i].rollno, s[i].marks);
        // }
    } while (c != 3);
    return 0;
}

¿Alguien puede decirme cómo puedo mostrar el Nombre y las Marcas junto con el rollno ordenado? Me está dando rollno ordenado y cuando muestro el resultado solo muestra los rollnos ordenados y también quiero el nombre y las marcas,

El resultado que obtengo es este:

Data Before Sorting:

        Name    |       Roll No.|       Marks    
        ----------------------------------       

Bhavin Patil    |       26      |       99.000000

Manasi Patil    |       28      |       90.000000

Dipa Sendre     |       22      |       98.000000

Enter choice for Sorting the Data
1.Quick Sort    2.Merge Sort    3.Exit

1

Data is sorted using Quick Sort:

Name :
Bhavin Patil    Roll No. : 22   Marks : 99.000000
Name :
Manasi Patil    Roll No. : 26   Marks : 90.000000
Name :
Dipa Sendre     Roll No. : 28   Marks : 98.000000

El resultado que quiero:

Data Before Sorting:

        Name    |       Roll No.|       Marks    
        ----------------------------------       

Bhavin Patil    |       26      |       99.000000

Manasi Patil    |       28      |       90.000000

Dipa Sendre     |       22      |       98.000000

Enter choice for Sorting the Data
1.Quick Sort    2.Merge Sort    3.Exit
1

Your data is sorting using Qiuck Sort algorithm....

Name :
Dipa Sendre     Roll No. : 22   Marks : 98.000000  
Name :
Bhavin Patil    Roll No. : 26   Marks : 99.000000  
Name :
Manasi Patil    Roll No. : 28   Marks : 90.000000 

Ya obtuve el segundo resultado al pasar la matriz de enteros en lugar de s[i].rollno y luego compararla con otras variables. Ahora, ¿cómo puedo mostrarlo sin hacer la complejidad del tiempo y pasar cualquier otra matriz de enteros?

Answer