Dsa Da 3
Dsa Da 3
: 22BCE2454]
SELECTION SORT
PROGRAM CODE:
//SelectionSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int arr[SIZE];
void SelectionSort()
{
int t,l;
for(int i=0;i<SIZE;i++)
{
l=i;
for(int j=i+1; j<SIZE;j++){
if(arr[l]>arr[j])
l=j;
}
t=arr[i];
arr[i] = arr[l];
arr[l] = t;
}
}
void Display()
{
printf("The numbers in ascending order: ");
for(int i=0; i<SIZE ; i++)
scanf(“%d”,&arr[i]);
SelectionSort();
Display();
return 0;
}
OUTPUT:
BUBBLE SORT
PROGRAM CODE:
//BubbleSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int arr[SIZE];
void BubbleSort()
{
int t;
for(int i=SIZE-1;i>0;i--)
{
for(int j=0;j<i;j++)
{
if(arr[j]>arr[j+1])
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
}
}
}
void Display()
{
printf("The numbers in ascending order: ");
for(int i=0;i<SIZE;i++)
printf("%d ",arr[i]);
}
int main() {
printf("Enter %d numbers: ",SIZE);
for(int i=0;i<SIZE;i++)
scanf("%d",&arr[i]);
BubbleSort();
Display();
return 0;}
OUTPUT:
INSERTION SORT
PROGRAM CODE:
// InsertionSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int arr[SIZE];
void InsertionSort()
{
int t,k,j;
for(int i=0;i<SIZE-1;i++)
{
if(arr[i]>arr[i+1])
{
k=arr[i+1];
for(j=i;(arr[j]>k)&&(j>=0);j--)
arr[j+1]=arr[j];
arr[++j]=k;
}
}
}
void Display()
{
printf("The numbers in ascending order: ");
for(int i=0;i<SIZE;i++)
printf("%d ",arr[i]);
}
int main() {
printf("Enter %d numbers: ",SIZE);
for(int i=0;i<SIZE;i++)
scanf("%d",&arr[i]);
InsertionSort();
Display();
return 0;
}
OUTPUT:
MERGE SORT
PROGRAM CODE:
//MergeSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int arr[SIZE];
void Merge(int arr[],int lower,int middle,int upper)
{
int i=lower,j=middle+1,k=0,arr2[upper+1];
while(i<=middle && j<=upper)
{
if(arr[i]>=arr[j])
arr2[k++]=arr[j++];
else
arr2[k++]=arr[i++];
}
for(int l=j;l<=upper;l++)
arr2[k++]=arr[j++];
for(int m=i;m<=middle;m++)
arr2[k++]=arr[i++];
for(int n=lower,o=0;n<=upper;n++,o++)
arr[n]=arr2[o];
}
void MergeSort(int arr[],int lower,int upper)
{
if(lower>=upper)
return;
int middle=(lower+upper)/2;
MergeSort(arr,lower,middle);
MergeSort(arr,middle+1,upper);
Merge(arr,lower,middle,upper);
}
void Display()
{
printf("The numbers in ascending order: ");
for(int i=0;i<SIZE;i++)
printf("%d ",arr[i]);
}
int main() {
printf("Enter %d numbers: ",SIZE);
for(int i=0;i<SIZE;i++)
scanf("%d",&arr[i]);
MergeSort(arr,0,SIZE-1);
Display();
return 0;
}
OUTPUT:
QUICK SORT
PROGRAM CODE:
// QuickSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
int arr[SIZE];
int partition(int arr[], int lower, int upper) {
int pivot = arr[lower], start = lower, end = upper, t;
while (start < end) {
while (arr[start] <= pivot && start < upper)
start++;
while (arr[end] > pivot) end--;
if (start < end) {
t = arr[start];
arr[start] = arr[end];
arr[end] = t;
}
}
t = arr[lower];
arr[lower] = arr[end];
arr[end] = t;
return end;
}
void QuickSort(int arr[], int lower, int upper) {
if (lower < upper) {
int loc = partition(arr, lower, upper);
QuickSort(arr, lower, loc - 1);
QuickSort(arr, loc + 1, upper);
}
}
void Display() {
printf("The numbers in ascending order: ");
for (int i = 0; i < SIZE; i++)
printf("%d ", arr[i]);
}
int main() {
printf("Enter %d numbers: ", SIZE);
for (int i = 0; i < SIZE; i++)
scanf("%d", &arr[i]);
QuickSort(arr, 0, SIZE - 1);
Display();
return 0;
}
OUTPUT:
COUNTING SORT
PROGRAM CODE:
// CountingSort
#include <stdio.h>
#include <stdlib.h>
#define SIZE 20
int arr[SIZE],arr2[SIZE];
void CountingSort(int arr[], int arr2[], int k, int n) {
int c[k+1];
for (int i=0; i<=k; i++) {
c[i] = 0;
}
for (int i=0; i<n; i++) {
c[arr[i]] = c[arr[i]] + 1;
}
for (int i=1; i<=k; i++) {
c[i] = c[i-1] + c[i];
}
for (int i=n-1; i>=0; i--) {
arr2[--c[arr[i]]] = arr[i];
}
for (int i=0; i<n; i++) {
arr[i] = arr2[i];
}
}
void Display()
{
printf("The numbers in ascending order: ");
for(int i=0;i<SIZE;i++)
printf("%d ",arr[i]);
}
int main() {
printf("Enter %d numbers: ",SIZE);
for(int i=0;i<SIZE;i++)
scanf("%d",&arr[i]);
CountingSort(arr,arr2,SIZE,SIZE);
Display();
return 0;
}
OUTPUT: