认知算法(十)

简介: 认知算法(十),一起来学习吧。

嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲认识算法,请一起学习吧。

一、希尔排序

希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。

希尔排序是基于插入排序的以下两点性质而提出改进方法的:

插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;
但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;
希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行依次直接插入排序。

  1. 算法步骤
    1.选择一个增量序列 t1,t2,……,tk,其中 ti > tj, tk = 1;

    2.按增量序列个数 k,对序列进行 k 趟排序;

    3.每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为 1 时,整个序列作为一个表来处理,表长度即为整个序列的长度。

二、代码实现

1.c语言

void shell_sort(int arr[], int len) {

    int gap, i, j;
    int temp;
    for (gap = len >> 1; gap > 0; gap >>= 1)
            for (i = gap; i < len; i++) {
                    temp = arr[i];
                    for (j = i - gap; j >= 0 && arr[j] > temp; j -= gap)
                            arr[j + gap] = arr[j];
                    arr[j + gap] = temp;
            }

}
2.c++
template
void shell_sort(T array[], int length) {

int h = 1;
while (h < length / 3) {
    h = 3 * h + 1;
}
while (h >= 1) {
    for (int i = h; i < length; i++) {
        for (int j = i; j >= h && array[j] < array[j - h]; j -= h) {
            std::swap(array[j], array[j - h]);
        }
    }
    h = h / 3;
}

}

相关文章
|
7月前
|
分布式计算 并行计算 算法
MapReduce在实现PageRank算法中的应用
总结来说,在实现PageRank算法时使用MapReduce能够有效地进行大规模并行计算,并且具有良好的容错性和可扩展性。
242 76
|
安全 物联网 5G
无线网络技术:5G之后的通信革命
【10月更文挑战第16天】本文探讨了5G之后无线网络技术的发展趋势,涵盖5G-A、Wi-Fi 7及未来通信技术展望。5G-A提升了网络速度、时延和连接数,Wi-Fi 7则在性能和可靠性上大幅跃升,未来通信技术将朝向更高速度、更低延迟、更广覆盖方向发展。
|
11月前
|
数据采集 监控 安全
数字孪生与金融:风险管理的新工具
数字孪生技术通过构建物理实体或系统的虚拟模型,实现对金融市场的实时监控、客户行为分析、市场风险预测及业务流程优化,为金融机构提供了全新的风险管理工具,提升了风险管理的精准度和效率。
|
监控 安全 物联网
物联网:如何对接物联网卡的管理平台
对接物联网平台的API通常涉及几个关键步骤,这些步骤帮助你有效地与平台交互,实现设备数据的收集、处理、分析及控制等功能。以下是一个通用的对接流程:
|
安全 Unix Linux
第一章 操作系统概述
第一章 操作系统概述
613 0
|
前端开发 定位技术
地图开发实战案例:高德地图的标注、信息窗口的实战实例
地图开发实战案例:高德地图的标注、信息窗口的实战实例
292 0
|
弹性计算 运维 安全
利用CEN-TR实现企业级云上网络架构最佳实践
随着云计算的普及,越来越多的传统企业客户也在选择把IDC的业务系统搬到公共云上,实现更大的弹性、更强的灵活性、更高的性价比。但与泛互联网型企业的轻资产相比,传统企业的云下IT规模较大,有比较沉重历史包袱重,以及各种行业安全规范的约束,所以对于网络的规划设计、部署使用、运维管理都有自己的要求,仅仅具备云产品的初级使用能力已不能满足实际使用需求。企业级云上网络架构的重点是帮助企业用户更高效地搭建安全可靠的云上网络架构,本文主要针对企业客户在云上的南北向流量(访问internet/被internet用户访问)和东西向流量(企业内部VPC互访)的互访、安全、管理等多方面需求,利用CEN-TR(云企业网企业版)实现云上东西向+南北向流量安全和统一公网出口的最佳实践。
利用CEN-TR实现企业级云上网络架构最佳实践
|
机器学习/深度学习 安全 算法
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
|
NoSQL Ubuntu
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
本篇就适合代码崩溃的方法,可以定位到代码崩溃原因,测试Demo。
麟系统开发笔记(十):在国产麒麟系统上使用gdb定位崩溃异常方法流程以及测试Demo
|
前端开发
调整typora主题的页面大小
调整typora主题的页面大小
551 0
调整typora主题的页面大小