希尔排序是一种插入排序方法,实际上是一种分组插入方法。其基本思想是:先取一个小于n的整数d1作为第一个增量,所有距离为d1的倍数的记录放在同一个组中,在各组内进行直接插入排序;然后,取第二个增量d2<d1,重复上述的分组和排序,直至所取的增量dt=1,即所有记录放在同一组中进行直接插入排序为止。
希尔排序是不稳定的。
代码:
#include <iostream> using namespace std; void shellsort(double R[],int n) { int i,j,increment; double temp; increment=n/2; while (increment>0) { for (j=increment;j<=n-1;j++) { temp=R[j]; i=j-increment; while ((i>=0)&&(R[i]>temp)) { R[i+increment]=R[i]; i=i-increment; } R[i+increment]=temp; } increment=increment/2; } return; } int main() { double a[10]; int i; cout<<"输入原始序列:"<<endl; for (i=0;i<10;i++) { cin>>a[i]; } cout<<endl; shellsort(a,10); cout<<"排序后:"<<endl; for (i=0;i<10;i++) { cout<<a[i]<<" "; } cout<<endl; return 0; }

浙公网安备 33010602011771号