希尔排序
#include<iostream> using namespace std; void swap(int* a,int* b) { int temp=*a; *a=*b; *b=temp; } void main() { int a[]={2,5,3,7,4,8,2,6,2,4,10}; int length=sizeof(a)/sizeof(int); int gap=length/2; int i; int j; while(gap>=1) { for(i=0;i<gap;i++) { for(j=gap+i;j<length;j+=gap) { int temp=j; while(temp>gap&&a[temp]<a[temp-gap]) { swap(&a[temp],&a[temp-gap]); temp-=gap; } } } gap/=2; } for(i=0;i<length;i++) { cout<<a[i]<<endl; } }