//希尔排序算法 #include <iostream> #include<stdio.h> using namespace std; int data[] = { 23, 34, 523, 421, 31, 3465, 4, 2341 }; const int n = sizeof(data) / sizeof(int); //希尔排序 //取间隔d的数进行排序,然后缩小d的范围,直到d<=0,d的范围取值d=(d+1)/2; //希尔排序 void Shellsort(int n) { int d=n/2; while(d>0) {//将间隔为d的数进行插入排序 for(int i=d;i<n;i++) { int t=a[i]; int j=i-d; while(j>=0 && t<a[j]) { a[j+d]=a[j]; a[j]=t; j=j-d; } } d=d/2; } } int main() { ShellSort(n); for(int i=0;i<n;i++) { printf("%d\t",data[i]); } return 0; }
希尔排序 (ShellSort)
最新推荐文章于 2022-05-05 10:29:38 发布