Criteria for Analysis
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void Bubble(int A[], int n)
{
int i, j, flag = 0;
for (i = 0; i < n - 1; i++)
{
flag = 0;
for (j = 0; j < n - i - 1; j++)
{
if (A[j] > A[j + 1])
{
swap(&A[j], &A[j + 1]);
flag = 1;
}
}
if (flag == 0)
break;
}
}
int main()
{
int A[] = {11, 13, 7, 12, 16, 9, 24, 5, 10, 3}, n = 10, i;
Bubble(A, n);
for (i = 0; i < 10; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void Insertion(int A[], int n)
{
int i, j, x;
for (i = 1; i < n; i++)
{
j = i - 1;
x = A[i];
while (j > -1 && A[j] > x)
{
A[j + 1] = A[j];
j--;
}
A[j + 1] = x;
}
}
int main()
{
int A[] = {11, 13, 7, 12, 16, 9, 24, 5, 10, 3}, n = 10, i;
Insertion(A, n);
for (i = 0; i < 10; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
void SelectionSort(int A[], int n)
{
int i, j, k;
for (i = 0; i < n - 1; i++)
{
for (j = k = i; j < n; j++)
{
if (A[j] < A[k])
k = j;
}
swap(&A[i], &A[k]);
}
}
int main()
{
int A[] = {11, 13, 7, 12, 16, 9, 24, 5, 10, 3}, n = 10, i;
SelectionSort(A, n);
for (i = 0; i < 10; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
#include <iostream>
using namespace std;
template <class T>
void Print(T& vec, int n, string s){
cout << s << ": [" << flush;
for (int i=0; i<n; i++){
cout << vec[i] << flush;
if (i < n-1){
cout << ", " << flush;
}
}
cout << "]" << endl;
}
void swap(int* x, int* y){
int temp = *x;
*x = *y;
*y = temp;
}
void SelectionSort(int A[], int n){
for (int i=0; i<n-1; i++){
int j;
int k;
for (j=k=i; j<n; j++){
if (A[j] < A[k]){
k = j;
}
}
swap(&A[i], &A[k]);
}
}
int main() {
int A[] = {3, 7, 9, 10, 6, 5, 12, 4, 11, 2};
int n = sizeof(A)/sizeof(A[0]);
Print(A, n, "\t\tA");
SelectionSort(A, n);
Print(A, n, " Sorted A");
return 0;
}
i
will look for an element greater than pivot (here 50
)j
will look for an element lesser than pivot.i
th and j
th elementsi
> j
then swap the pivot with j
th element.50
. Second part ka to hai hi inifinity
.On Sorted List :
#include <stdio.h>
#include <stdlib.h>
void swap(int *x, int *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
int partition(int A[], int l, int h)
{
int pivot = A[l];
int i = l, j = h;
do
{
do
{
i++;
} while (A[i] <= pivot);
do
{
j--;
} while (A[j] > pivot);
if (i < j)
swap(&A[i], &A[j]);
} while (i < j);
swap(&A[l], &A[j]);
return j;
}
void QuickSort(int A[], int l, int h)
{
int j;
if (l < h)
{
j = partition(A, l, h);
QuickSort(A, l, j);
QuickSort(A, j + 1, h);
}
}
int main()
{
int A[] = {11, 13, 7, 12, 16, 9, 24, 5, 10, 3}, n = 10, i;
QuickSort(A, 0, n);
for (i = 0; i < 10; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void Merge(int A[], int l, int mid, int h)
{
int i = l, j = mid + 1, k = l;
int B[100];
while (i <= mid && j <= h)
{
if (A[i] < A[j])
B[k++] = A[i++];
else
B[k++] = A[j++];
}
for (; i <= mid; i++)
B[k++] = A[i];
for (; j <= h; j++)
B[k++] = A[j];
for (i = l; i <= h; i++)
A[i] = B[i];
}
void MergeSort(int A[], int l, int h)
{
int mid;
if (l < h)
{
mid = (l + h) / 2;
MergeSort(A, l, mid);
MergeSort(A, mid + 1, h);
Merge(A, l, mid, h);
}
}
int main()
{
int A[] = {11, 13, 7, 12, 16, 9, 24, 5, 10, 3}, n = 10, i;
MergeSort(A, 0, 9);
for (i = 0; i < 10; i++)
printf("%d ", A[i]);
printf("\n");
return 0;
}