简单插入排序和希尔排序代码如下:
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
//d=1的希尔排序即为简单插入排序
void shellinsert(int *a,int d,int len)
{
int x,j;
for(int i=d;i<len;i++)
{
x=a[i];//待排序的数字
j=i-d;//从后往前遍历
while(j>=0 && a[j]>x)
{
a[j+d]=a[j];
j-=d;
}
//存在比x小的输
if(j!=i-d)
a[j+d]=x;
}
}
//希尔排序将无序数组划分为若干个子序列,对各个子序列再进行简单插入排序;增量从length/2逐步减小到1;
void shellsort(int *a,int len)
{
int d=len/2;
while(d>=1)
{
shellinsert(a,d,len);
d/=2;
}
}
int main()
{
int input[10];
for(int i=0;i<9;i++)
cin >> input[i];
//shellinsert(input,1,9);//简单插入排序
//cout << "simple insert sort: " << endl;
shellsort(input,9);//希尔排序
cout << "shell insert sort: " << endl;
for(int i=0;i<9;i++)
cout << input[i] << ' ';
cout << endl;
return 0;
}