简单的希尔排序 Shell Sort

#include <iostream>
using namespace std;
void ShellSort(int* iArray,int length)
{
		//初始化jump等于length
	int jump = length;
		//标记本趟检测是否进行了交换,
		//		若进行了 则还有下次从头开始的检测,
		//		否则停止,继续改变jump的值 做另一趟排序
	bool isSwap;
	while(jump != 0)
	{
			//jump每次/2
		jump = jump / 2;
		do{
			int i = 1;
				//初始化表示没有进行交换
			isSwap = false;
			while( i <= length - jump)
			{
				if(iArray[i] > iArray[i+jump])
				{
					int temp = iArray[i];
					iArray[i] = iArray[i+jump];
					iArray[i+jump] = temp;
					isSwap = true;
				}
				i++;
			}
		}while(isSwap == true);//如果进行了交换说明 增量为jump的序列 
								//可能存在不是有序的 在检测一遍
							   //否则说明增量为jump的序列是有序的
	}
}
int main()
{
	int iArray[] = {0,50,123,36,25,200,36,95,70,14,10,321,1,3,5,8};
	ShellSort(iArray,15);
	for(int i = 1; i <= 15; i++)
	{
		cout<<iArray[i]<<" ";
	}
	cout<<endl;
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值