• 希尔排序


    问题:希尔排序又叫缩小增量排序。增量的选取为d=length/2;d=d/2...d=1;

    代码:

    #include <iostream>
    using namespace std;
    
    void shellSort(int arr[],int length)
    {
    	int d;
    	int temp;
    	int j,k;
    	static int count=1;
    	for(d=length/2;d>=1;d=d/2)
    	{
    		for(j=d;j<length;j++)
    		{
                for(k=j-d;k>=0;k=k-d)
    			{
    				if(arr[k]>arr[k+d])
    				{
    					temp=arr[k+d];
    					arr[k+d]=arr[k];
    					arr[k]=temp;
    				}
    			}
    		}
    		cout<<"第"<<count<<"趟希尔排序:";
    		for(int i=0;i<length;i++)
    		{
    			cout<<arr[i]<<" ";
    		}
    		cout<<endl;
    	}
    }
    
    void display(int arr[],int length)
    {
    	int i;
    	for(i=0;i<length;i++)
    	{
    		cout<<arr[i]<<" ";
    	}
    	cout<<endl;
    }
    
    int main()
    {
    	int array[]={7,2,34,8,7,68,1,30,21,6};
    	cout<<"希尔排序前:"<<endl;
    	display(array,10);
    	shellSort(array,10);
    	cout<<"希尔排序后:"<<endl;
    	display(array,10);
    	return 0;
    }
    

    运行结果:

  • 相关阅读:
    Redis篇
    MySql篇
    Tomcat篇
    JDK篇
    冒泡排序(算法源码)
    堆排序(源码)
    快速排序(递归及非递归算法源码)
    MongoDB 复制
    MongoDB appendix
    服务器端脚本
  • 原文地址:https://www.cnblogs.com/xshang/p/3102379.html
Copyright © 2020-2023  润新知