希尔排序

问题:希尔排序又叫缩小增量排序。增量的选取为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;

}

运行结果:

希尔排序

 

你可能感兴趣的:(希尔排序)