#include<iostream>
#include<string>
#include <sstream>
using namespace std;
//ListNode* reverse()
void insert(int arr[],int n)
{
int i,j,d;
int key;
d = n/2;
while(d > 0)
{
for(int i = d; i < n; i++)
{
key = arr[i];
j = i-d;
while(arr[j] > key && j >=0)
{
arr[j+d] = arr[j];
j = j-d;
}
arr[j+d] = key;
}
d = d/2;
}
}
int main()
{
int arr[] = {4,6,1,2,3};
//for(int i = 1; i < 5; i++)
{
insert(arr,5);
}
for(int i = 0; i < 5; i++)
{
cout << arr[i] <<endl;
}
system("pause");
return 0;
}
1、
#include<stdio.h>
void shellSort(int R[], int n)
{
int i, j, d;
int tmp;
d = n / 2;//设置增量
while (d > 0)//出口
{
for (i = d; i < n; i++)//对所有组采用直接插入排序
{
tmp = R[i];//对相隔d个为止一组采用直接插入排序
j = i - d;
while (j >= 0&&tmp<R[j])
{
R[j + d] = R[j];
j = j - d;
}
R[j + d] = tmp;
}
d = d / 2;//减小增量
}
}
int main()
{
int arr[] = {3,5,6,2,3,1,9,0};
int n = 8;
shellSort(arr,n);
//printf("%d\n",arr[i]);
for(int i = 0; i < n; i++)
{
printf("%d\n",arr[i]);
}
return 0;
}