shell排序

  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]<<" ";
 	
 }

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。