冒泡、快速、选择、插入算法

LVGL 离线字体转换lv_font_conv本地安装 LVGL FONT CONV 离线版本 阅读详情

冒泡

   public void sortedList1(int[] arr) {
        int tmp;
        for (int i = 0; i < arr.length; i++) {
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[i] > arr[j]) {
                    tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
    }

快速

在这里插入图片描述

   /**
     * @param arr   排列的数组
     * @param left  当前排列数组片段的最左下标
     * @param right 当前排列数组片段的最右下标
     * @param tmp   默认右边下标先判断,则tmp取最左下标值arr[left]
     */
    public void sortedList2(int[] arr, int left, int right, int tmp) {
        int start = left; //记录当前需要排序数组片段起点下标
        int end = right;  //记录当前需要排序数组片段终止下标
        int pos = 1; //1:当前由right指针判断(默认), 0:当前由left指针判断
        while (left != right) {
            if (pos == 1) {
                if (arr[right] < tmp) {
                    arr[left] = arr[right]; //数组左端下标赋值
                    left++; //左下标往左移一位
                    pos = 0; //切换为left指针判断
                } else {
                    //右下标继续移动
                    right--;
                }
            } else {
                if (arr[left] > tmp) {
                    arr[right] = arr[left]; //数组右端下标赋值
                    right--; //右下标往右移一位
                    pos = 1; //切换为right指针判断
                } else {
                    //左下标继续移动
                    left++;
                }
            }
        }
        // 跳出循环,此时left、right指向同一下标,left = right,取哪个都行
        arr[left] = tmp;  //已经定位tmp值的位置,即下标为left(right)
        // 以left(right)下标作为分割点,进行下面的判断
        if (left - start > 1) {
            // 左边数组片段长度大于1,继续快排
            sortedList2(arr, start, left - 1, arr[start]);
        }
        if (end - left > 1) {
            // 右边数组片段长度大于1,继续快排
            sortedList2(arr, left + 1, end, arr[left + 1]);
        }
    }

选择

 // 选择排序,改进了冒泡,减少了交换的次数
    public void sortedList3(int[] arr) {
        int minIdx; //记录最小值下标
        int tmp; //交换暂存变量
        for (int i = 0; i < arr.length; i++) {
            minIdx = i; // 默认取到的第一个为最小值
            for (int j = i + 1; j < arr.length; j++) {
                if (arr[j] < arr[minIdx]) {
                    minIdx = j; //重新记录最小值下标
                }
            }
            if (minIdx != i) {
                //最小值不是第一个,则交换
                tmp = arr[i];
                arr[i] = arr[minIdx];
                arr[minIdx] = tmp;
            }
        }
    }
 

插入
在这里插入图片描述

public void sortedList4(int[] arr) {
    int tmp;
    for (int i = 1; i < arr.length; i++) {
        tmp = arr[i]; //需要插入的值
        for (int k = i; k > 0; k--) {
            if(arr[k-1] > tmp){
                arr[k] = arr[k-1]; //向后移动一位
                if (k==1) //此时tmp是最小值,已经移动到了arr[1],且此时arr[0]=arr[1]
                    arr[k-1] = tmp;  // arr[0]赋值

            }else if (arr[k-1] < tmp){
                if (k != i) //如果k == i 此时的tmp刚好比前面的值都大,无需移动,直接跳出循环
                    arr[k] = tmp;
                break;
            }
        }
    }
}
cs231n作业 assignment 1 q1 q2 q3 请先看课程作业地址。有两种做作业的方法,一种是在google Colab上做 (需魔法),另一种就是下载到本地,但是我懒得在本地配置环境,太麻烦了,还得修改一些基础代码,我就直接在google colab上做了google colab 配置环境只需要跟着教程走就好了最后还有一题解答题懒得做的,这个题目做的没啥意思。让我们用简单写法来实现softmax的loss函数与梯度计算。 阅读详情

相关推荐

保姆级教程:用PyTorch从零实现SDE扩散模型(附完整代码与MNIST实战)

本文提供了一份详细的PyTorch教程,指导读者从零开始实现SDE扩散模型,并附有完整的代码示例和MNIST数据集实战。通过解释随机微分方程(SDE)的核心概念、模型架构设计、训练流程实现以及采样生成过程,帮助开发者掌握扩散模型的构建与应用。

weixin_28677005的博客 267

js常用排序算法(冒泡,插入,快速,选择)

js常用排序算法总结 1. 冒泡排序 程序员启蒙排序算法 基础中的基础 思想: 先建立一个外部循环为总比较次数 再写一个内循环为两两比较的次数 第一个内循环结束应将数组中最大的数排在了数组的最右边 经过arr.length-1次循环 数组中的元素按照从小到大的顺序排列 var arr = [3, 4, 15,80,7, 2, 6, 5, 8, 9, 10, 16, 13]; // le...

weixin_42989966的博客 5090

高通量测序数据分析:RNA-seq

深度测序相关数据库与数据格式 SRA toolkit 一、NCBI 和EBI、DDBJ组成INSDC,数据内容相同所以找NCBI就行。 (一)NCBI常用数据库 GenBank:遗传序列数据库,收集了所有公开的DNA序列及其注释 GEO (Gene Expression Omnibus) :收集整理各种表达芯片数据,后来加入了甲基化、lncRNA、miRNA、CNV等其他芯片,还有高通量测序数据...

qq_41134363的博客 3万+

冒泡,选择,插入,快速四大排序算法详细解析说明

基本的四大排序算法解释说明,冒泡排序,选择排序,插入排序,快排,都有用代码实现,并图解分析排序过程

SeeYouAgain的博客 2001

(6)NUC980 SPI Nand 启动

方式一:下载到SPI-NAND-Flash中,这种方式可以将程序固化到SPIflash中,可以掉电保存。第二种方式下载到DDR中程序掉电丢失,但是DDR调试方便,时候调试的时候使用。之前的设置都是基于SD卡启动,今天测试一下是用SPI flash启动。方式二: 下载到DDR中,①设置为USB启动②下载到DDR中③运行。1:烧写BootLoader。

卤煮小鱼的博客 1754

别再只调A*算法了!聊聊ROS机器人导航中,OpenCV视觉信息如何与激光雷达数据“打配合”

本文探讨了ROS机器人导航中激光雷达与OpenCV视觉融合的实战策略,揭示了如何通过多模态感知提升导航精度。文章详细介绍了视觉特征到代价地图的转化方法、系统级挑战的工程解决方案,以及融合感知下的路径规划进化,帮助开发者优化机器人导航系统。

weixin_29278805的博客 226

数据结构——排序算法(冒泡、快速、选择、插入)

排序(Sort)是将无序的记录序列(或称文件)调整成有序的序列。排序算法在计算机科学中非常重要,因为它们可以提高数据检索效率、简化后续算法的复杂性和优化存储结构等。

TENET123的博客 1938

常见图像加密性能评价指标(详解加python实现)

前言 本文目的 介绍一些常见的用于图像加密的评价指标并予以代码实现,方便以后做实验时参考查阅。 图像加密领域所有常见的安全分析技术汇总如下图。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7N8tbKNx-1618308894314)(%E5%B8%B8%E8%A7%81%E5%9B%BE%E5%83%8F%E5%8A%A0%E5%AF%86%E6%80%A7%E8%83%BD%E8%AF%84%E4%BB%B7%E6%8C%87%E6%A0%87/1-s2.0-S0165

z2bns的博客 3万+

排序算法-冒泡、选择、堆、插入、归并、快速、希尔

排序算法-冒泡、选择、堆、插入、归并、快速、希尔

伟庭的博客 1006

Sigmastar平台WDR调试实战:从参数解析到鬼影消除的完整指南

本文提供了Sigmastar平台宽动态(WDR)技术的实战调试指南。针对逆光、运动场景下的核心痛点,系统性地解析了从多曝光采集、HDR融合到色调映射的完整管线,并重点阐述了如何通过调整曝光比、运动阈值与调整曲线等关键参数,有效消除运动鬼影、平衡暗部噪声与细节,最终实现清晰稳定的图像效果。

Jerry的专栏 927

YOLOv11低照度增强主干网络PE-YOLO:原理与完整实现教程

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 727

排序算法:冒泡、选择、插入、希尔、快速

常见的排序方法: 1:冒泡排序 2:选择排序 3:插入排序 4:希尔排序 5:堆排序 6:归并排序 7:快速排序 一、冒泡排序: 思想:逐个对比,逐个交换,把一个最大值或最小值放到队列尾部,下一次将次大值或次小值放到倒数第二位,以此类推知道排序结束。 例: 将[2,3,1,5]排序: list_01=[2,3,1,5] for i in range(len(li...

weixin_43800846的博客 1123

路径规划 | 图解RRT*算法(附ROS C++/Python/Matlab仿真)

RRT*算法针对传统RRT算法进行了渐进最优改进,在添加节点到搜索树的过程中进行重连选择。本文图解RRT*算法原理,并采用ROS C++、Python、Matlab三种语言实现算法,加深理解

FRIGIDWINTER的博客 9406

Java——数组实例(冒泡、选择、插入、快速排序算法)

二维数组的应用(四种常见的简单排序算法): 冒泡排序法(从后往前); 选择排序算法; 直接插入排序法; 快速排序; 求一组数中的最大值和最小值;

Best_Basic的博客 7431

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

排序算法----冒泡、选择、插入、快速

排序算法1----冒泡、选择、插入、快速

weixin_52721512的博客 752

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【算法】常用的排序算法简介:冒泡、选择、插入、归并、快速

本文简单介绍了五种常用的排序算法:冒泡、选择、插入、归并、快速排序

weixin_44211968的博客 1525

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

PHP排序四算法之冒泡、选择、快速、插入

1、冒泡排序 思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 &lt;?php function arr_sort($arr){ $count = count($arr); $tmp = 0; for ($i=0; $i &lt; $co...

PQQ 291

四大排序算法:冒泡,插入,选择,快速

四大排序算法:冒泡,插入,选择,快速冒泡排序基本概念C++代码时间复杂度和空间复杂度插入排序基本概念C++代码时间复杂度和空间复杂度选择排序基本概念C++代码时间复杂度和空间复杂度快速排序基本概念C++代码时间复杂度和空间复杂度 冒泡排序 基本概念 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。一遍冒泡排序之后,就会将最大(最小)的数放到最后去,所以第二遍

qq_44858592的博客 846

排序算法01 | 冒泡、插入、选择、快速、归并

冒泡、插入、选择、快速、归并

weixin_45055622的博客 818

经典排序算法(选择、冒泡、快速、插入)

各个排序的时间复杂度排序算法在外面初阶段学习过程中,非常常见,当然在以后找工作面试的时候也经常问到,今天为大家介绍四个常见且用到最多的,希望大家能够学习掌握。分别是选择排序、冒泡排序、快速排序和插入排序。

Linux驱动开发工程师,熟悉Linux/Android底层驱动、TP、显示、IIC、网络等通用外设调试适配,Linux上层应用开发。常用平台瑞芯微、全志、恩智浦等。 394

四种常见算法(冒泡,选择,插入,快速)及分析

今天总结一下经常遇到的四种算法 第一种:冒泡排序 /* * 排序思想: 1. 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步 做完后,最后的元素会是最大的数。 3. 针对所有的元素重复以上的步骤,除了最后一个。 4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要...

z710757293的博客 1546

用objective-c 实现常用算法(冒泡、选择、快速、插入)

一.冒泡排序 - (void)sort:(NSMutableArray *)arr { for (int i = 0; i < arr.count; i++) { for (int j = 0; j < arr.count - i - 1;j++) { if ([arr[j+1]integerValue] < [arr[j] integerVa

u011181465的专栏 3595

基础算法(冒泡、选择、插入、快速)

** 1.冒泡排序 ** 原理:1、从第一个数据开始,与第二个数据相比较,如果第二个数据小于第一个数据,则交换两个数据的位置。   2、指针由第一个数据移向第二个数据,第二个数据与第三个数据相比较,如果第三个数据小于第二个数据,则交换两个数据的位置。   3、依此类推,完成第一轮排序。第一轮排序结束后,最大的元素被移到了最右面。   4、依照上面的过程进行第二轮排序,将第二大的排在倒数第二的位置。...

Jar_viS的博客 292

java 基础排序(冒泡、插入、选择、快速)算法回顾

java 基础排序(冒泡、插入、选择、快速)算法回顾 冒泡排序 private static void bubbleSort(int[] array) { int temp; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array.leng...

weixin_30687051的博客 795

php冒泡插入,PHP 冒泡/快速/选择/插入排序算法实例讲解

本教程我们用PHP实例来讲解冒泡排序法,快速排序法,选择排序法,插入排序法等四大基础排序算法,我们的重点是给出算法思路,这种思路同样适用于其他编程语言。四大基本排序算法分别是:冒泡排序法,快速排序法,选择排序法,插入排序法,本文我们用 PHP 实例讲解这四大基本排序。1. 冒泡排序思路分析:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的...

weixin_31220401的博客 331

插入排序,选择,冒泡,快速排序算法及优化

一开始只想贴代码,但是后来发现还是有人看的。所以觉得还是有必要花点时间去写写。 先定义一个用于交换两个数的函数吧。 #if 0 inline void swap(int& a, int& b) { int c = a; a = b; b = c; } #else // inline void swap(int& a, int& b) { if (a != b) { a =

DreamCLR的博客 684
上一篇: MyBatisPlus的常用注解
下一篇: 一、Quartz入门案例及文档
strap
博客等级 码龄3年 60粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值