认知算法(十)

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

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

一、希尔排序

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

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

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

  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;
}

}

相关文章
|
存储
Rockchip系列之浅度分析LED状态灯 Driver篇(1)
Rockchip系列之浅度分析LED状态灯 Driver篇(1)
488 2
|
安全
网站服务器设置禁PING的方法步骤
网站服务器设置禁PING的方法步骤有些站长的网站经常会遭受恶意的DDOS攻击,而黑客们看网站是否被打死的其中一个标准就是在本地用DOS窗口PING你的网站IP。这时,如果想增加自己网站的安全性,不让别人频繁地使用PING命令来监控自己的网站,就可以在网站服务器的防火墙里面设置禁止PING。
3693 0
|
10月前
|
存储 算法 Java
解锁“分享文件”高效密码:探秘 Java 二叉搜索树算法
在信息爆炸的时代,文件分享至关重要。二叉搜索树(BST)以其高效的查找性能,为文件分享优化提供了新路径。本文聚焦Java环境下BST的应用,介绍其基础结构、实现示例及进阶优化。BST通过有序节点快速定位文件,结合自平衡树、多线程和权限管理,大幅提升文件分享效率与安全性。代码示例展示了文件插入与查找的基本操作,适用于大规模并发场景,确保分享过程流畅高效。掌握BST算法,助力文件分享创新发展。
|
算法 异构计算
基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4-ASK调制解调系统的算法仿真效果、理论基础及Verilog核心程序。仿真在Vivado2019.2环境下进行,分别测试了SNR为20dB、15dB、10dB时的性能。理论部分概述了4-ASK的工作原理,包括调制、解调过程及其数学模型。Verilog代码实现了4-ASK调制器、加性高斯白噪声(AWGN)信道模拟、解调器及误码率计算模块。
377 8
|
监控 安全 物联网
物联网:如何对接物联网卡的管理平台
对接物联网平台的API通常涉及几个关键步骤,这些步骤帮助你有效地与平台交互,实现设备数据的收集、处理、分析及控制等功能。以下是一个通用的对接流程:
|
安全 Unix Linux
第一章 操作系统概述
第一章 操作系统概述
751 0
|
前端开发 定位技术
地图开发实战案例:高德地图的标注、信息窗口的实战实例
地图开发实战案例:高德地图的标注、信息窗口的实战实例
335 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

热门文章

最新文章