首页 > 编程语言 >排序算法

排序算法

时间:2024-01-05 15:56:38浏览次数:38  
标签:int 元素 一轮 minNum 算法 排序 比较

说明: AElFTkSuQmCC.png

说明: untitle.png

说明: untitle.png

冒泡排序

思想:

1、一个无序的数组,n个元素,一共需要排序n-1轮

2、在每一轮中,从数组第0位开始,比较相邻两个元素,如果与需求逆序,就交换这两个元素,在每一轮中,可以将当前最大(最小)的元素交换到最后,

3、直到执行完n-1轮,没有需要比较的元素为止。

代码实现:

public static void bubSort(int[] a){    
  for (int i = 0;i < a.length - 1;i++){       
    for (int j = 0;j < a.length - 1 - i;j++){           
      if (a[j] > a[j + 1]){                
        int temp = a[j];                
        a[j] = a[j + 1];                
        a[j + 1] = temp;            
      }      
    }  
  }   
}

快速排序

思想:

代码实现:

选择排序

思想:

1、一个无序的数组,一共有n个元素,需要排序n-1轮

2、在每一轮的排序中,需要将当前轮的第0个元素的角标记录下来,然后依次与后面的元素进行比较,如果发现比当前轮第0个元素更小(更大)的元素,就记录角标,当比较完数组最后一个元素,如果最小的元素不是当前轮第0个元素,进行交换。

3、直到执行完n-1轮,所有元素都按顺序排好

说明: untitle.png

代码实现:

public static void seletSort(int[] a){    
  //外层控制比较的轮数    
  for (int i = 0;i < a.length - 1;i++){       
    //声明一个变量,用于存储最小元素的角标,起始位轮数的第一个元素的角标       
    int minNum = i;       
    //内层循环控制每一轮的比较,第0个元素从当前轮第一个元素开始比较        
    for (int j = i + 1;j < a.length;j++){            
      minNum = (a[minNum] < a[j])?minNum : j;       
    }       
    //一轮比完以后,将第0位的元素,如果当前轮最小元素不是第0位,就交换位置       
    if (minNum != i){            
      int temp = a[minNum];           
      a[minNum] = a[i];        
      a[i] = temp;     
    } 
  }
}

插入排序

思想:

1、一个无序的数组,n个元素,一共执行n-1轮

2、在每一轮中,需要将当前有序区边界后一个元素,依次与有序区元素右后向前进行比较,如果是逆序的,就将有序区的该元素向后移一位,直到遇到顺序的有序区元素,就停止比较,进行下一轮,并将该元素插入该有序区元素的后面。

3、直到执行完n-1轮,将所有元素按照顺序排好

说明: untitle.png

代码实现:

public static void insertSort(int[] a){    
  //外层循环控制轮数    
  for (int i = 1;i < a.length;i++){       
    //每一轮中进行比较的元素为a[i]      
    //变量j为有序区最后一个元素的角标   
    int num = a[i];      
    int j = i - 1;       
    /*内层循环控制每一轮比较的细节       q
    要插入的元素一次向前比较,如果小于前面的元素就将比较的元素向后移动    
    直到数组的第0位        
    */      
    while (j >= 0 && num < a[j]){ 
      a[j + 1] = a[j];         
      j--;      
    }      
    //如果到了数组的第0位或插入的元素比要比较的元素大的情况下,就在比较的元素后面插入     
    a[j + 1] = num;  
  }
}

排序算法性能对比

说明: untitle.png

标签:int,元素,一轮,minNum,算法,排序,比较
From: https://www.cnblogs.com/yhgh/p/17947428

相关文章

  • 生物识别应用锁控二合一和三合一芯片的算法描述和特点
    主控集成电容触控按键(二合一),外接指纹模组方案特点•主控:采用集成TouchKey的芯片ACM32FP0•算法:采用金融级安全芯片ACH512/高性能算法芯片ACM32FP4•非接:采用A32NQ32C3读卡芯片•支持指纹、按键、钥匙、非接、蓝牙等多种开锁方式•指纹、密码安全存储、敏感信息不外泄•提供......
  • 在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要
    在Python中,有几个库可以帮助我们自动寻找最适合的机器学习模型和参数。这里有两个主要的库:1.**lazypredict**¹:这个库可以快速地比较多种机器学习算法的性能,从而帮助我们选择最佳的算法。它可以在循环中迭代多个模型,这通常需要一些时间,但是使用lazypredict可以克服这个限制。下......
  • 无涯教程-Redis - Sorted Sets(排序集)
    RedisSortedSets与RedisSets类似,它具有存储在集合中的值的独特功能,不同之处在于,排序集的每个元素都与一个分数相关联,该分数用于从最小到最大分数中获取排序的排序集。SortedSets-示例redis127.0.0.1:6379>ZADDLearnfk1redis(integer)1redis127.0.0.1:6379>ZA......
  • 【教3妹学编程-算法题】经营摩天轮的最大利润
    3妹:“打个中国结,再系个红腰带,愿善良的人们天天好运来,你勤劳生活美,你健康春常在,你一生的忙碌为了笑逐颜开。”2哥 :3妹,元旦快乐啊。3妹:2哥元旦快乐~。2哥:祝新的一年,3妹技术突飞猛进,工资涨涨涨。3妹:祝新的一年,2哥能够找到女朋友,哈哈哈......
  • Landsat 7地表温度计算:单窗算法的ENVI、ERDAS实现
    本文介绍基于ENVI与ERDAS软件,对Landsat7遥感影像数据加以单窗算法的地表温度(LST)反演操作。(基于ENVI与ERDAS的Landsat7ETM+单窗算法地表温度(LST)反演)1原理部分与前期操作准备首先说一个批量计算LST的方法——基于GEE的Landsat地表温度反演可以看谷歌地球引擎GEE批量计算Land......
  • 智能分析网关V4算法配置步骤2.0——睡岗检测
    AI智能分析网关V4是TSINGSEE青犀视频旗下的一款高效分析网关,可分别作为上级或下级平台进行级联,还可实现人体行为检测、车辆事件检测、环境卫生检测与消防事件检测等等,广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。将智能分析网关V4结合我们的视频融合平台EasyCVR一起使......
  • 生物识别应用指纹的算法是什么样的?有什么性能?
    方案特点•采用金融级安全芯片ACH512的指纹模组,指纹和密码安全存储,云端数据安全传输•采用高性能指纹专用安全MCU芯片ACM32FP4,支持小点阵图像算法处理•支持80*64、88*112、96*96、160*160、192*192等像素传感器•已适配传感器厂家:FPC、比亚迪、贝特莱、芯启航、集创、迈瑞微......
  • 机器学习-Kmeans算法的sklearn实现
    fromsklearn.clusterimportKMeansfromsklearn.datasetsimportmake_blobsimportmatplotlib.pyplotasplt#可视化数据#生成数据n_samples=200n_clusters=3random_state=42X,y=make_blobs(n_samples=n_samples,centers=n_clusters,random_state=rando......
  • 【ChatGPT 默认强化学习策略】PPO 近端策略优化算法
    PPO近端策略优化算法PPO=概率比率裁剪+演员-评论家算法演员-评论家算法:多智能体强化学习核心框架概率比率裁剪:逐步进行变化的方法PPO目标函数的设计重要性采样KL散度 PPO=概率比率裁剪+演员-评论家算法论文链接:https://arxiv.org/abs/1707.06347OpenAI提出PPO旨在......
  • 文心一言 VS 讯飞星火 VS chatgpt (165)-- 算法导论13.1 5题
    五、用go语言,证明:在一棵红黑树中,从某结点x到其后代叶结点的所有简单路径中,最长的一条至多是最短一条的2倍。文心一言:首先,我们要理解红黑树的性质。红黑树是一种自平衡的二叉查找树,它满足以下性质:每个节点或是红色,或是黑色。根节点是黑色。每个叶节点(NIL或空节点)是黑色。如果......