希尔排序

特殊的,当SheelSort()的d=1时,为直接插入排序

#include <bits/stdc++.h> 
using namespace std; 

#define ElemType int
//typedef int ElemType;

typedef struct {
	ElemType r[100];
	int length;
}Sheel;

void SheelSort(Sheel &l,int d = 1){
	int i = 0,j = 0;
	for(i = 1+d;i<=l.length;i++){
		l.r[0] = l.r[i];
		for(j = i-d;j>0&&l.r[j]>l.r[0];j=j-d){
			l.r[j+1*d] = l.r[j];
		}
		l.r[j+d] = l.r[0];
	}
}

int main(){
	int n = 12+1;
	int A[] = {5,2,4,7,3,16,89,71,2,9,3,6};
	int ds[] = {5,3,1};
	Sheel l;
	for(int i = 0;i<n;i++){
		l.r[i+1] = A[i];
		l.length++;
	}
	for(int i = 0;i<3;i++){
		SheelSort(l,ds[i]);	
	}
	for(int i = 1 ;i<n;i++){
		printf("%d\t",l.r[i]);
	}
	return 0;
}
posted @ 2025-04-22 15:45  嘉君  阅读(6)  评论(0)    收藏  举报