数据结构-排序-希尔排序(c++实现)

#include<iostream>
using namespace std;

#define MAXN 20
typedef int keytype;

typedef struct {
	keytype  key;
}Redtype;

typedef struct {
	Redtype r[MAXN + 1];
	keytype length;
}Sqlist;

void ShellInsert(Sqlist& L, int dk) {
	int i, j;
	for (i = dk + 1; i < L.length; i++) {
		if (L.r[i].key < L.r[i - dk].key) {
			L.r[0] = L.r[i];
			for (j = i - dk; (j > 0) && (L.r[0].key < L.r[j].key); j = j - dk) {
				L.r[j + dk] = L.r[j];
			}
			L.r[j + dk] = L.r[0];
		}
	}
}
void ShellSort(Sqlist& L, int d[], int t) {
	for (int i = 0; i < t; i++) {
		ShellInsert(L, d[i]);
	}
}
 
int main() {
	Sqlist L;
	L.length = 9;
	for (int i = 1; i < L.length; i++) {
		cin >> L.r[i].key;
	}
	L.r[0].key = L.r[1].key;  //r[0] 哨兵
	int d[3] = { 4,2,1 };
	ShellSort(L, d, 3);
	for (int i = 1; i < L.length; i++)
		cout << L.r[i].key << ' ';
}

猜你喜欢

转载自blog.csdn.net/qq_43710881/article/details/105894902