算法提炼--递归(3)

简介: 算法提炼--递归(3)

用递归实现插入排序

插入排序的原理是从头遍历到尾部,从一个逐次递增,先一个排,然后两个排,然后…多个排序之后,获得结果


递归:要找出口 当只有一个元素的时候不需要进行排,所以直接返回 这时我们已经解决了寻找出口问题

找相同之处:当有两个数的时候,前数大于后数,需要将两数交换位置,当有三个数的时候,先比对后两个交换位置,然后通过递归来依次向前移动,所以我们可以得到相关判断:

从尾部开始向前移动

  public static void main(String[] args) {
        int a[] = {1,8,9,31,13,4,7,4};
        int  b = a.length-1;
        insert(a,b);
        for (int i = 0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
    }
//    5 6 32 4 8
//    插入排序
    static void insert(int[] a, int b){
        if (b == 0){
            return;
        }
        insert(a,b-1);
        int c = b-1;
        while(b>0 && a[b-1]>a[b]){
            a[b-1]=a[b-1]^a[b];
            a[b]=a[b-1]^a[b];
            a[b-1]=a[b-1]^a[b];
            b--;
        }
//        3 1 5 2
//        3 1 2 5
    }
相关文章
|
13天前
|
算法 C++
算法笔记:递归(c++实现)
算法笔记:递归(c++实现)
|
6天前
|
存储 算法 程序员
数据结构与算法===递归
数据结构与算法===递归
|
11天前
|
机器学习/深度学习 算法 C语言
详细介绍递归算法在 C 语言中的应用,包括递归的基本概念、特点、实现方法以及实际应用案例
【6月更文挑战第15天】递归算法在C语言中是强大力量的体现,通过函数调用自身解决复杂问题。递归涉及基本概念如自调用、终止条件及栈空间管理。在C中实现递归需定义递归函数,分解问题并设定停止条件。阶乘和斐波那契数列是经典应用示例,展示了递归的优雅与效率。然而,递归可能导致栈溢出,需注意优化。学习递归深化了对“分而治之”策略的理解。**
28 7
|
12天前
|
算法 前端开发 Java
探讨Java中递归构建树形结构的算法
探讨Java中递归构建树形结构的算法
9 1
|
16天前
|
存储 算法 数据挖掘
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
python5种算法模拟螺旋、分层填充、递归、迭代、分治实现螺旋矩阵ll【力扣题59】
|
16天前
|
机器学习/深度学习 存储 算法
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
Python5种算法回溯+剪枝、字典序、递归交换、计数回溯、迭代法 实现全排列ll【力扣题47】
|
16天前
|
存储 机器学习/深度学习 算法
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
python 五种算法转置后翻转、层次旋转、递归分块、一次性旋转、环状替换 实现旋转图像【力扣题48】
|
20天前
|
算法
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
27 1
|
20天前
|
存储 算法
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
11 0
数据结构和算法学习记录——二叉树的存储结构&二叉树的递归遍历(顺序存储结构、链表存储结构、先序中序后序递归遍历)
|
9天前
|
机器学习/深度学习 存储 算法
算法学习:递归
算法学习:递归
14 0