其他分享
首页 > 其他分享> > 八大排序之一--希尔排序

八大排序之一--希尔排序

作者:互联网

希尔排序


一、解析问题

void ShellSort(int* arr, int len)
{
	if (arr == nullptr || len <= 1)
	{
		return;
	}
	for (int gap = len >> 1; gap > 0; gap >>= 1)
	{
		for (int i = gap; i < len; ++i)
		{
			int insert_Val = arr[i];
			int j;
			for (j = i - gap; j >= 0 && insert_Val < arr[j]; j -= gap)
			{
				arr[j + gap] = arr[j];
			}
			arr[j + gap] = insert_Val;
		}
	}
}

二,测试用例

// 八大排序.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;

void ShellSort(int* arr, int len)
{
	if (arr == nullptr || len <= 1)
	{
		return;
	}
	for (int gap = len >> 1; gap > 0; gap >>= 1)
	{
		for (int i = gap; i < len; ++i)
		{
			int insert_Val = arr[i];
			int j;
			for (j = i - gap; j >= 0 && insert_Val < arr[j]; j -= gap)
			{
				arr[j + gap] = arr[j];
			}
			arr[j + gap] = insert_Val;
		}
	}
}
int main()
{
	int arr[] = { 2,1,5,4,1,2,3,6,9,5,1,4,8,31,1,5646,1,6,156,156,156,156,146,1,156,1,65,1651,5,151,51,6 };

	ShellSort(arr, 32);
	for (int i = 0; i < 32; ++i)
	{
		cout << arr[i] << " ";
	}
	return 0;
}

在这里插入图片描述

三,下一个排序

请添加图片描述

标签:arr,--,插入排序,len,gap,int,希尔,排序
来源: https://blog.csdn.net/m0_46208939/article/details/121353180