shell排序
#include<iostream> using namespace std; void insertDxSort(int *data,int start,int end,int dx) { //以增量dx进行增量排序 int key=0; int j=0; for(int i=start+dx;i<=end;i+=dx) { key=data[i]; j=i-dx; while(j>=start&&data[j]>key) { data[j+dx]=data[j]; j-=dx; } data[j+dx]=key; } } void shellSort(int *data,int start,int end,int dx) { for(int i=0;i!=dx;i++) insertDxSort(data,start+i, end, dx); } void shellSortCore(int *data,int start,int end) { shellSort(data,start,end,3); shellSort(data,start,end,2); shellSort(data,start,end,1); } int main() { int data[]={8,21,2,34,0,211,56,2,6}; shellSortCore(data,0,8); for(int i=0;i<=8;i++) cout<<data[i]<<" "; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。