0% ont trouvé ce document utile (0 vote)
8 vues13 pages

Ds Practical 7 Solution

ygyugugy

Transféré par

vemalapavankalyan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues13 pages

Ds Practical 7 Solution

ygyugugy

Transféré par

vemalapavankalyan
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Click here

kitty

Practical 7
Implement various sorting algorithms:
1. Selection Sort( )
#include <stdio.h>

void selectionSort(int arr[], int n) {


int i, j, min_index;

for (i = 0; i < n - 1; i++) {


min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
if (min_index != i) {
// Swapping elements without using pointers
int temp = arr[i];
arr[i] = arr[min_index];
arr[min_index] = temp;
}
}
}

void printArray(int arr[], int size) {


int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

selectionSort(arr, n);

printf("Sorted array: \n");


printArray(arr, n);

return 0;
}
kitty

Output:
Original array:
64 25 12 22 11
Sorted array:
11 12 22 25 64

2. Bubble Sort( )
#include <stdio.h>

void bubbleSort(int arr[], int n) {


int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
// Swap if the element found is greater than the next element
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

// Function to print an array


void printArray(int arr[], int size) {
int i;
for (i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);

// Print the original array


printf("Original array: \n");
printArray(arr, n);

// Perform bubble sort on the array


bubbleSort(arr, n);

// Print the sorted array


printf("Sorted array: \n");
printArray(arr, n);

return 0;
kitty

}
Output:
Original array:
64 25 12 22 11
Sorted array:
11 12 22 25 64

3. Insertion Sort( )
#include <stdio.h>

void insertionSort(int arr[], int n) {


int i, key, j;
for (i = 1; i < n; i++) {
key = arr[i];
j = i - 1;

while (j >= 0 && arr[j] > key) {


arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}

void printArray(int arr[], int n) {


int i;
for (i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}

int main() {
int arr[] = {12, 11, 13, 5, 6};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

insertionSort(arr, n);

printf("\nSorted array: \n");


printArray(arr, n);
kitty

return 0;
}
Output:
Original array:
12 11 13 5 6
Sorted array:
5 6 11 12 13

4. Shellsort( )
#include <stdio.h>

void shellSort(int arr[], int n) {


for (int gap = n / 2; gap > 0; gap /= 2) {
for (int i = gap; i < n; i++) {
int temp = arr[i];
int j;
for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
}
}
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {12, 34, 54, 2, 3};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

shellSort(arr, n);

printf("\nSorted array: \n");


printArray(arr, n);
kitty

return 0;
}
Output:
Original array:
12 34 54 2 3
Sorted array:
2 3 12 34 54

5. Mergesort( )
#include<stdio.h>

void printarray(int *A ,int n){


for(int i=0;i<n;i++){
printf("%d ",A[i]);
}
printf("\n");
}

void merge(int A[],int mid,int low,int high){


int B[100];
int i,j,k;
i=low;
j=mid+1;
k=low;
while(i<=mid && j<=high){
if(A[i]<A[j]){
B[k]=A[i];
i++;
k++;
}else{
B[k]=A[j];
j++;
k++;
}
}
while(i<=mid){
B[k]=A[i];
i++;
k++;
}
while(j<=high){
B[k]=A[j];
j++;
k++;
}
for(int i=low;i<=high;i++){
A[i]=B[i];
}
}
kitty

void mergesort(int A[],int low,int high){


int mid;
if(low<high){
mid=(low+high)/2;
mergesort(A,low,mid);
mergesort(A,mid+1,high);
merge(A,mid,low,high);
}
}

int main(){
int A[]={3,5,2,13,12};
int n=5;
printarray(A,n);
mergesort(A,0,4);
printarray(A,n);
return 0;
}
Output:
3 5 2 13 12
2 3 5 12 13

6. Heapsort( )
#include <stdio.h>

void heapify(int arr[], int n, int i) {


int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;

if (left < n && arr[left] > arr[largest])


largest = left;

if (right < n && arr[right] > arr[largest])


largest = right;

if (largest != i) {
int temp = arr[i];
arr[i] = arr[largest];
arr[largest] = temp;

heapify(arr, n, largest);
}
}
kitty

void heapSort(int arr[], int n) {


for (int i = n / 2 - 1; i >= 0; i--)
heapify(arr, n, i);

for (int i = n - 1; i > 0; i--) {


int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;

heapify(arr, i, 0);
}
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\n");
}

int main() {
int arr[] = {12, 11, 13, 5, 6, 7};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

heapSort(arr, n);

printf("\nSorted array: \n");


printArray(arr, n);

return 0;
}
Output:
Original array:
12 11 13 5 6 7
Sorted array:
5 6 7 11 12 13

7. Quicksort( )
#include <stdio.h>
kitty

void swap(int arr[], int a, int b) {


int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}

int partition(int arr[], int low, int high) {


int pivot = arr[high];
int i = low - 1;

for (int j = low; j < high; j++) {


if (arr[j] <= pivot) {
i++;
swap(arr, i, j);
}
}
swap(arr, i + 1, high);
return (i + 1);
}

void quickSort(int 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(int arr[], int size) {


for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);
kitty

quickSort(arr, 0, n - 1);

printf("\nSorted array: \n");


printArray(arr, n);

return 0;
}
Output:
Original array:
10 7 8 9 1 5
Sorted array:
1 5 7 8 9 10

8. Counting Sorting()
#include <stdio.h>

void countingSort(int arr[], int n) {


int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}

int count[max + 1];

for (int i = 0; i <= max; i++) {


count[i] = 0;
}

for (int i = 0; i < n; i++) {


count[arr[i]]++;
}

int index = 0;

for (int i = 0; i <= max; i++) {


while (count[i] > 0) {
arr[index++] = i;
count[i]--;
}
}
}
kitty

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {4, 2, 2, 8, 3, 3, 1};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

countingSort(arr, n);

printf("\nSorted array: \n");


printArray(arr, n);

return 0;
}
Output:
Original array:
4228331
Sorted array:
1223348

9. Radix sort ()
#include <stdio.h>
int getMax(int arr[], int n) {
int max = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}

void countingSort(int arr[], int n, int exp) {


int output[n];
int count[10] = {0};
kitty

for (int i = 0; i < n; i++) {


count[(arr[i] / exp) % 10]++;
}
for (int i = 1; i < 10; i++) {
count[i] += count[i - 1];
}

for (int i = n - 1; i >= 0; i--) {


output[count[(arr[i] / exp) % 10] - 1] = arr[i];
count[(arr[i] / exp) % 10]--;
}

for (int i = 0; i < n; i++) {


arr[i] = output[i];
}
}

void radixSort(int arr[], int n) {


int max = getMax(arr, n);

for (int exp = 1; max / exp > 0; exp *= 10) {


countingSort(arr, n, exp);
}
}

void printArray(int arr[], int n) {


for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}

int main() {
int arr[] = {170, 45, 75, 90, 802, 24, 2, 66};
int n = sizeof(arr) / sizeof(arr[0]);

printf("Original array: \n");


printArray(arr, n);

radixSort(arr, n);

printf("\nSorted array: \n");


printArray(arr, n);
kitty

return 0;
}
Output:
Original array:
170 45 75 90 802 24 2 66
Sorted array:
2 24 45 66 75 90 170 802

Vous aimerez peut-être aussi