DSAsorting
DSAsorting
#include<stdio.h>
void bubble(int a[ ], int n){
int i, j, temp;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
temp = a[j];
if(a[j] > a[j+1])
{
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main(){
int n, a[10], i;
printf("Enter the no of elements\t");
scanf("%d", &n);
printf("\nEnter elements\n");
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for(i=0;i<n;i++){
printf("%d\t", a[i]);
}
bubble(a, n);
printf("\nAfter sorting:\n");
for(i=0;i<n;i++){
printf("%d\t", a[i]);
}
return 0;
}
Write a program to selection sort
#include<stdio.h>
void select(int a[], int n){
int i, j, temp, index, least;
for(i=0; i<n ;i++){
least = a[i];
index = i;
for(j=i+1; j<n; j++){
if(a[j] < least){
least = a[j];
index = j;
}
}
if(i != index){
temp = a[i];
a[i] = a[index];
a[index] = temp;
}
}
}
int main(){
int n, a[10], i;
printf("Enter the no. of elements\t");
scanf("%d", &n);
printf("Enter elements\n”);
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
select(a, n);
printf("\nAfter sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
return 0;
}
Write a program to insertion sort
#include<stdio.h>
void insert(int a[], int n){
int i, j, temp;
for(i=0; i<n ;i++){
temp = a[i];
j = i-1;
while((temp < a[j]) && j >= 0){
a[j+1] = a[j];
j--;
}
a[j+1] = temp;
}
}
int main(){
int n, a[10], i;
printf("Enter the no. of elements\t");
scanf("%d", &n);
printf("Enter elements\n”, );
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
insert(a, n);
printf("\nAfter sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
return 0;
}
Write a program to shell sort
#include<stdio.h>
int main(){
int n, i, j, gap, temp, a[10];
printf("Enter the no. of elements\t");
scanf("%d", &n);
printf("Enter %d elements\t");
for(i=0; i<n; i++){
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
for(gap = n/2; gap > 0; gap/=2){
for(i = gap; i < n; i++){
temp = a[i];
for(j = i; j>=gap; j -= gap){
if(temp < a[j-gap]){
a[j] = a[j-gap];
}
else{
break;
}
}
a[j] = temp;
}
}
printf("\nAfter sorting:\n");
for(i=0; i<n; i++){
printf("%d\t", a[i]);
}
return 0;
}
Write a program to merge sort
#include <stdio.h>
void merge(int a[], int l, int m, int r) {
int x = l;
int k = l, i, b[10], y = m;
while (x < m && y <= r) {
if (a[x] < a[y]) {
b[k] = a[x];
x++;
} else {
b[k] = a[y];
y++;
}
k++;
}
while (x < m) {
b[k] = a[x];
x++;
k++;}
while (y <= r) {
b[k] = a[y];
y++;
k++;
}
for (i = l; i <= r; i++) {
a[i] = b[i]; }
}
void merge_sort(int a[], int l, int r) {
if (l < r) {
int mid = (l + r) / 2;
merge_sort(a, l, mid);
merge_sort(a, mid + 1, r);
merge(a, l, mid + 1, r);
}
}
int main() {
int a[10], n, i;
printf("Enter the no. of elements\t");
scanf("%d", &n);
printf("Enter %d elements\n", n);
for (i = 0; i < n; I++)
{
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for (i = 0; i < n; I++)
{
printf("%d\t", a[i]); }
merge_sort(a, 0, n - 1);
printf("\nAfter sorting:\n");
for (i = 0; i < n; i++)
{
printf("%d\t", a[i]);}
return 0;
}
Write a program to heap sort
#include <stdio.h>
void swap(int* a, int* b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
void heapify(int a[], int n, int i){
int largest = i;
int l = 2*i+1;
int r = 2*i+2;
if(l<n && a[l] > a[largest])
largest = l;
if(r < n && a[r] > a[largest])
largest = r;
if(largest != i){
swap(&a[i], &a[largest]);
heapify(a, n, largest);
}
}
void heapSort(int a[], int n){
for(int i = n/2-1; i >=0; i--)
heapify(a, n, i);
for(int i = n-1; i>=0; i--){
swap(&a[0], &a[i]);
heapify(a, i, 0);
}
}
int main() {
int a[10], n, i;
printf("Enter the no. of elements\t");
scanf("%d", &n);
printf("Enter %d elements\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for (i = 0; i < n; i++) {
printf("%d\t", a[i]);
}
heapSort(a, n);
printf("\nAfter sorting:\n");
for (i = 0; i < n; i++) {
printf("%d\t", a[i]);
}
return 0;
}
Write a program to quick sort
#include <stdio.h>
int split(int a[10], int l, int r){
int x = l, y = r;
int p = a[l], temp;
while(x<y){
while(x<r &&a[x] <= p)
x++;
while(y>l && a[y] > p)
y--;
if(x<y){
temp = a[x];
a[x] = a[y];
a[y] = temp;
}
}
a[l] = a[y];
a[y] = p;
return y;
}
void quick(int a[10], int l, int r){
int p;
if(l<r){
p = split(a, l, r);
quick(a, l, p-1);
quick(a, p+1, r);
}
}
int main() {
int a[10], n, i, l = 0, r;
printf("Enter the no. of elements\t");
scanf("%d", &n);
r = n-1;
printf("Enter %d elements\n", n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
printf("\nBefore sorting:\n");
for (i = 0; i < n; i++) {
printf("%d\t", a[i]);
}
quick(a, l, r);
printf("\nAfter sorting:\n");
for (i = 0; i < n; i++) {
printf("%d\t", a[i]);
}
return 0;
}