C语言实现希尔排序

c 复制代码
void ShellSort(int arr[], int n) {//希尔排序--升序
	int i = 0;
	int j = 0;
	int d = n / 2;
	for (d = n / 2;d >= 1;d /= 2) {
		for (i = d;i < n;i++) {
			int tmp = arr[i];
			for (j = i;j >= 0;j -= d) {
				if (tmp < arr[j - d]) {
					arr[j] = arr[j - d];
				}
				else {
					arr[j] = tmp;
					break;
				}
			}
		}
	}
}

int main() {
	int arr[10] = { 3,5,2,9,1,4,8,6,10,7 };
	int n = 10;
	ShellSort(arr, 10);
	for (int i = 0;i < 10;i++) {
		printf("%d ", arr[i]);
	}
	return 0;
}
相关推荐
l1t6 分钟前
在arm64 Linux系统上编译tdoku-lib的问题和解决
linux·运维·服务器·c语言·cmake
C雨后彩虹8 分钟前
无向图染色
java·数据结构·算法·华为·面试
secondyoung9 分钟前
Git使用:rebase用法
c语言·经验分享·git·vscode
坚持就完事了15 分钟前
扫描线算法
算法
鱼跃鹰飞18 分钟前
Leetcode尊享面试100题:252. 会议室
算法·leetcode·面试
程序员-King.19 分钟前
二分查找——算法总结与教学指南
数据结构·算法
Zevalin爱灰灰21 分钟前
现代控制理论——第三章 线性控制系统的能控性和能观性
线性代数·算法·现代控制
kklovecode22 分钟前
C语言之头文件,宏和条件编译
c语言·开发语言·算法
Xの哲學33 分钟前
Linux自旋锁深度解析: 从设计思想到实战应用
linux·服务器·网络·数据结构·算法
晚风吹长发37 分钟前
深入理解Linux中用户缓冲区,文件系统及inode
linux·运维·算法·链接·缓冲区·inode