uva10152-shellsort && 希尔排序

本文深入解析了一种不常见的排序算法——龟壳排序,通过对比其与传统希尔排序的区别,帮助读者理解其工作原理及应用场景。文章详细介绍了如何在给定的字符串序列中找出分界线,实现有序排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       本题名为“shellsort”,但是注意不是希尔排序,而是“龟壳排序”, 无语。。。。。。。

       这题虽然比较水,但我还是纠结了很长时间的说,不过思路理顺了就好。题目中给出了处理前和处理后的两个字符串序列,我们着重看处理后的,处理后字符串序列一定可以分为两个部分,上面一部分一定是被“处理”的“turtle”,下面是没被“处理”的,只需找出分界线即可。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

typedef struct{
	char name[81];
}name_set;

int main()
{
	name_set a[201], b[201], c[201];
	int test_case;
	int total, i, j, k;
	scanf("%d", &test_case);
	while(test_case--)
	{
		scanf("%d", &total);
		getchar();
		for(i=0; i<total; ++i)
		{
			gets(a[i].name);
		}
		for(i=0; i<total; ++i)
		{
			gets(b[i].name);
		}
		i = j = k = total-1;
		while(i>=0 && j>=0)
		{
			if(!strcmp(a[i].name, b[j].name))
			{
				i--;
				j--; 
			}
			else
			{
				i--;
			}			
		}
		while(j>=0)
			puts(b[j--].name);
		printf("\n");
	}
	return 0;
}

关于希尔排序,给出维基百科上的链接,虽然本题没有明显的体现出。。。。。。


点击打开链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值