#include <iostream>
#include <cmath>
using namespace std;
void swap(int p, int j, int* arr );
void shellSortwhile(int arr[], int size);
void shellSort(int arr[], int gap,int size);
void print(int* arr, int size);
int main() {
int array[]={12,2,4,23,5,1,6,8,16,64,32,7,43,243,76};
int size=15;
for (int i=size/2;i>=1;i/=2)#include <iostream>
#include <cmath>
using namespace std;
void swap(int p, int j, int* arr );
void shellSortwhile(int arr[], int size);
void shellSort(int arr[], int gap,int size);
void print(int* arr, int size);
int main() {
int array[]={12,2,4,23,5,1,6,8,16,64,32,7,43,243,76};
int size=15;
print(array,15);
for (int i=size/2;i>=1;i/=2)
{ shellSort(array,i,size);
cout<<i<<endl;
}
print(array,15);
// shellSortwhile(array,15);
}
void print(int* arr, int size)
{
cout<<"Now the array will be printed"<<endl;
for (int i=0;i<size;i++)
cout<<arr[i]<<endl;
}
void swap(int p, int j, int* arr )
{
int temp=arr[p];
arr[p]=arr[j];
arr[j]=temp;
}
void shellSortwhile(int arr[], int size) {
int i, j, gap, temp;
gap = size/2;
while(gap > 0) {
i = gap;
while(i < size) {
temp = arr[i];
for(j = i; (j >= gap) && (arr[j - gap] > temp); j -=gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
i++;
}
gap = gap / 2;
}
}
void shellSort(int arr[], int gap,int size)
{
for (int i=0;i<size-(gap);i++)
{
if (arr[i]>arr[i+gap])
{
swap(i,i+gap,arr);
for(int j=i;j>=0+gap;j-=gap)
{if (arr[j]<arr[j-gap])
swap(j-gap,j,arr);
}
}
}
}
{ shellSort(array,i,size);
cout<<i<<endl;
}
print(array,15);
// shellSortwhile(array,15);
print(array,15);
}
void print(int* arr, int size)
{
cout<<"Now the array will be printed"<<endl;
for (int i=0;i<size;i++)
cout<<arr[i]<<endl;
}
void swap(int p, int j, int* arr )
{
int temp=arr[p];
arr[p]=arr[j];
arr[j]=temp;
}
void shellSortwhile(int arr[], int size) {
int i, j, gap, temp;
gap = size/2;
while(gap > 0) {
i = gap;
while(i < size) {
temp = arr[i];
for(j = i; (j >= gap) && (arr[j - gap] > temp); j -=gap) {
arr[j] = arr[j - gap];
}
arr[j] = temp;
i++;
}
gap = gap / 2;
}
}
void shellSort(int arr[], int gap,int size)
{
for (int i=0;i<size-(gap);i++)
{
if (arr[i]>arr[i+gap])
{
swap(i,i+gap,arr);
print(arr,size);
for(int j=i;j>=0+gap;j-=gap)
{if (arr[j]<arr[j-gap])
swap(j-gap,j,arr);
print(arr,size);
}
}
}
}