Ds practical 7
Ds practical 7
//7th DS
#include <stdio.h>
struct Student
{
char student_name[50];
int student_roll_no;
int total_marks;
};
void swap(struct Student* a, struct Student* b)
{
struct Student t = *a;
*a = *b;
*b = t;
}
int count=1;
int partition (struct Student arr[], int low, int high)
{
int pivot = arr[high].student_roll_no;
int i = (low - 1);
for (int j = low; j <= high - 1; j++)
{
if (arr[j].student_roll_no < pivot)
{
i++;
swap(&arr[i], &arr[j]);
count++;
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(struct Student arr[], int low, int high)
{
if (low < high)
{
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
void printArray(struct Student arr[], int size)
{
int i;
for (i = 0; i < size; i++)
{
printf("%s \t%d \t%d\n",arr[i].student_name,arr[i].student_roll_no,arr[i].total_marks);
}
}
int main()
{
int n,i;
printf("Enter number of students: ");
scanf("%d",&n);
struct Student stud[n];
fflush(stdin);
printf("Enter information: ");
for(i=0;i<n;i++)
{
printf("student %d:\nName:",i+1);
scanf("%s",stud[i].student_name);
while(getchar()!='\n');
printf("Roll no: ");
scanf("%d",&stud[i].student_roll_no);
printf(" total Marks: ");
scanf("%d",&stud[i].total_marks);
}
quickSort(stud, 0, n - 1);
printf("Sorted array: \n");
printArray(stud, n);
printf("Number of swap performed is %d",count);
return 0;
}
Comments
Post a Comment