正文

Shell排序算法的简单实现2007-04-22 23:36:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/andyhou/25149.html

分享到:

//                                  Shell sort program in c++#include <iostream>using namespace std; void swap(int *array,int i,int j){ int temp=array[i]; array[i]=array[j]; array[j]=temp;}//分部中的插入入排序。void middleInsertSort(int *Array,int n,int delta){ for(int i=delta;i<n;i+=delta)   //是相隔一个delta进行插入排序。  for(int j=i;j>=delta;j-=delta) //与前面的几个元素比较交换。  {   if(Array[j]>Array[j-delta])    swap(Array,j,j-delta);   else    break;              //比了其中的最大的或最小的就不用再比其他元素                     }                          //节约时间。} //Shell sortvoid ShellSort(int *A,int n){  for(int delta=n/2;delta>0;delta/=2)    //分几级的跳。   for(int j=0;j<delta;j++)          //比前面的和后面的对应。    middleInsertSort(&A[j],n-j,delta);//&A[j]采取直接寻地址的找到。节省}                                              //时间。n-j比完后面的还要比的数目。 //输出元素void print(int *A,int n){ cout<<"print cout all number:"; for(int i=0;i<n;i++)  cout<<A[i]<<"  "; cout<<endl;}int main(){ int n; cout<<"Enter the sun of number: "; cin>>n; int *A=new int[n]; cout<<"Enter the number: "<<endl; for(int i=0;i<n;i++)  cin>>A[i]; ShellSort(A,n); print(A,n); delete[] A; return 0;}

阅读(3176) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册