栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

TZC 1283: 简单排序 —— 希尔排序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TZC 1283: 简单排序 —— 希尔排序

我们以TZC 1283为例简单说明一下排序(含十大经典排序算法)的python实现方法和C实现方法。希尔排序原理请参见:https://www.cnblogs.com/chengxiao/p/6104371.html 或 https://www.runoob.com/w3cnote/shell-sort.html

原题链接:1283: 简单排序

python代码如下:

import math


# 希尔排序
def shell_sort(arr):
    gap = 1
    while gap < len(arr) / 3:
        gap = gap * 3 + 1
    while gap > 0:
        for a in range(gap, len(arr)):
            tmp = arr[a]
            b = a - gap
            while b >= 0 and arr[b] > tmp:
                arr[b + gap] = arr[b]
                b -= gap
            arr[b + gap] = tmp
        gap = math.floor(gap / 3)
    return arr


T = int(input())
for i in range(T):
    s = input().split()
    lt = [int(x) for x in s]
    lt1 = lt[::-1]
    lt1.pop()
    n = len(lt1)

    shell_sort(lt1)

    for j in range(n):
        if j != n - 1:
            print(lt1[j], end=' ')
        else:
            print(lt1[j])

 C语言代码如下:

#include 
#include 
#define N 1010
void shell_sort(int arr[], int len)	//希尔排序 
{
    int gap, i, j;
    int temp;
    for(gap=len/2; gap>0; gap/=2)
        for(i=gap; i=0 && arr[j]>temp; j-=gap)
                arr[j+gap]=arr[j];
            arr[j+gap]=temp;
        }
}
int main()
{
	int m,n,i,j,t,a[N]={0};
	scanf("%d",&m);
	while(m--)
	{
		scanf("%d",&n);
		memset(a,0,n);		//初始化数组
		for(i=0;i<=n-1;i++)		//输入
			scanf("%d",&a[i]);
		
		shell_sort(a,n);

		for(i=0;i<=n-1;i++)		//输出 
		{
			if(i!=n-1)
				printf("%d ",a[i]);
			else
				printf("%dn",a[i]);
		}
	}
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1017990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号