-
Notifications
You must be signed in to change notification settings - Fork 0
/
Structure.cpp
75 lines (61 loc) · 1.51 KB
/
Structure.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*Sakiba Belal
ID:BFH2325008F
Session:2022-2023
NSTU-18th,IIT-6th
*/
#include <stdio.h>
#include <string.h>
// Define the structure for student
typedef struct {
char name[50];
int grade;
} Student;
// Function to swap two students
void swap(Student* a, Student* b) {
Student temp = *a;
*a = *b;
*b = temp;
}
// Partition function used in Quick Sort
int partition(Student arr[], int low, int high) {
int pivot = arr[high].grade; // Pivot chosen as the grade of the high element
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j].grade < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
// Quick Sort function
void quickSort(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);
}
}
// Function to print the array of students
void printArray(Student arr[], int size) {
for (int i = 0; i < size; i++) {
printf("Name: %s, Grade: %d\n", arr[i].name, arr[i].grade);
}
}
int main() {
Student students[] = {
{"Alice", 85},
{"Bob", 75},
{"Charlie", 95},
{"David", 65},
{"Eve", 70}
};
int n = sizeof(students)/ sizeof(students[0]);
printf("Unsorted array:\n");
printArray(students, n);
quickSort(students, 0, n - 1);
printf("\nSorted array:\n");
printArray(students, n);
return 0;
}