c_cpp 希尔排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 希尔排序相关的知识,希望对你有一定的参考价值。

class ShellSort {
public:
void sort(int *A, int n, int m)
{
	if (m > 1)
	{
		for (int i = 0; m + i < n; i++)
		{
			if (A[i] > A[i + m])
			{
				int temp = A[i];
				A[i] = A[i + m];
				A[i + m] = temp;
			}
		}
		for (int i = 0; i < n; i++)
		{
			cout << A[i] << " ";
		}
		cout << endl;
	}
	else
	{
		for (int i = 1; i < n; i++)
		{
			for (int j = 0; j < i; j++)
			{
				if (A[i] < A[j])
				{
					int temp = A[j];
					A[j] = A[i];
					A[i] = temp;
				}
			}
		}
	}
}
void shell(int *A, int n, int m)
{
	if (m>1 && m % 2 != 0)
		m = m / 2 + 1;
	else if(m>1 && m % 2==0)
		m = m / 2;
	if (m > 1)
	{
		sort(A, n, m);
		shell(A, n, m);
	}
	else if (m == 1)
	{
		sort(A, n, m);
	}
}
int* shellSort(int* A, int n) {
	// write code here
	int m = n;
	shell(A, n, m);
	return A;
}
}

以上是关于c_cpp 希尔排序的主要内容,如果未能解决你的问题,请参考以下文章

❤️数据结构入门❤️(4 - 8)- 希尔排序

希尔排序的介绍和希尔排序基本思想以及代码实现

希尔排序

希尔排序

希尔排序

6.4 希尔排序