趣学算法
希尔排序c++代码
代码如下
#include<iostream>
using namespace std;
#define Maxsize 100
void ShellInsert(int r[],int n,int dk)
{
int i, j,k;
for (i = dk + 1; i <= n; i++)
{
if (r[i] < r[i - dk])
{
r[0] = r[i];
for (j = i - dk; j > 0 && r[j] > r[0]; j -= dk)
r[j + dk] = r[j];
r[j + dk] = r[0];
}
}
for (k = 1; k <= n; k++)
cout << r[k] << " ";
cout << endl;
}
void ShelllSort(int r[], int n, int dt[], int t)
{
for (int k = 0; k < t; k++)
{
ShellInsert(r, n, dt[k]);
}
}
int main()
{
int i, n, r[Maxsize+1];
int dt[3] = { 5,3,1 }; //这个增量序列可以自己设置
int t = 3;
cout << "请输入数列中元素的个数n:" << endl;
cin >> n;
cout << "请依次输入数列中的元素:" << endl;
for (i = 1; i <= n; i++)
{
cin >> r[i];
}
ShelllSort(r, n, dt, t);
return 0;
}
结语
非常简单的代码,可以改成c语言完全没问题;第一次写csdn,代码来源是趣学算法一书。