Skip to content

Commit b33aece

Browse files
Add files via upload
1 parent 1f1a1c6 commit b33aece

File tree

2 files changed

+121
-0
lines changed

2 files changed

+121
-0
lines changed

Mergesort.c

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Merge sort Algorithm
2+
#include <stdio.h>
3+
4+
void mergesort(int a[], int i, int j);
5+
void merge(int a[], int i1, int j1, int i2, int j2);
6+
7+
int main() {
8+
int a[30], n, i;
9+
printf("Enter no of elements:");
10+
scanf("%d", & n);
11+
printf("Enter array elements:");
12+
13+
for (i = 0; i < n; i++)
14+
scanf("%d", & a[i]);
15+
16+
mergesort(a, 0, n - 1);
17+
18+
printf("\nSorted array is :");
19+
for (i = 0; i < n; i++)
20+
printf("%d ", a[i]);
21+
22+
return 0;
23+
}
24+
25+
void mergesort(int a[], int i, int j) {
26+
int mid;
27+
28+
if (i < j) {
29+
mid = (i + j) / 2;
30+
mergesort(a, i, mid); //left recursion
31+
mergesort(a, mid + 1, j); //right recursion
32+
merge(a, i, mid, mid + 1, j); //merging of two sorted sub-arrays
33+
}
34+
}
35+
36+
void merge(int a[], int i1, int j1, int i2, int j2) {
37+
int temp[50]; //array used for merging
38+
int i, j, k;
39+
i = i1; //beginning of the first list
40+
j = i2; //beginning of the second list
41+
k = 0;
42+
43+
while (i <= j1 && j <= j2) //while elements in both lists
44+
{
45+
if (a[i] < a[j])
46+
temp[k++] = a[i++];
47+
else
48+
temp[k++] = a[j++];
49+
}
50+
51+
while (i <= j1) //copy remaining elements of the first list
52+
temp[k++] = a[i++];
53+
54+
while (j <= j2) //copy remaining elements of the second list
55+
temp[k++] = a[j++];
56+
57+
//Transfer elements from temp[] back to a[]
58+
for (i = i1, j = 0; i <= j2; i++, j++)
59+
a[i] = temp[j];
60+
}

Quicksort.c

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// Quick sort Algorithm
2+
#include <stdio.h>
3+
4+
void quick_sort(int[], int, int);
5+
int partition(int[], int, int);
6+
7+
int main() {
8+
int a[50], n, i;
9+
printf("How many elements?");
10+
scanf("%d", & n);
11+
printf("\nEnter array elements:");
12+
13+
for (i = 0; i < n; i++)
14+
scanf("%d", & a[i]);
15+
16+
quick_sort(a, 0, n - 1);
17+
printf("\nArray after sorting:");
18+
19+
for (i = 0; i < n; i++)
20+
printf("%d ", a[i]);
21+
22+
return 0;
23+
}
24+
25+
void quick_sort(int a[], int l, int u) {
26+
int j;
27+
if (l < u) {
28+
j = partition(a, l, u);
29+
quick_sort(a, l, j - 1);
30+
quick_sort(a, j + 1, u);
31+
}
32+
}
33+
34+
int partition(int a[], int l, int u) {
35+
int v, i, j, temp;
36+
v = a[l];
37+
i = l;
38+
j = u + 1;
39+
40+
do {
41+
do
42+
i++;
43+
44+
while (a[i] < v && i <= u);
45+
46+
do
47+
j--;
48+
while (v < a[j]);
49+
50+
if (i < j) {
51+
temp = a[i];
52+
a[i] = a[j];
53+
a[j] = temp;
54+
}
55+
} while (i < j);
56+
57+
a[l] = a[j];
58+
a[j] = v;
59+
60+
return (j);
61+
}

0 commit comments

Comments
 (0)