1.冒泡算法


正常写法

    public static void main(String[] args) {int[]bubble={12,2,9,3,4,7,14,13};//i表示轮次for (int i = 0; i <bubble.length-1 ; i++) {//j表示数组的第几个indexfor (int j = 0; j <bubble.length-1-i ; j++) {if(bubble[j]<bubble[j+1]){swap(bubble,j,j+1);}}}System.out.println(Arrays.toString(bubble));}public static void swap(int[]irr,int j,int k){irr[j]^=irr[k];irr[k]^=irr[j];irr[j]^=irr[k];}

优化写法

public static void main(String[] args) {int[]bubble={12,2,9,3,4,7,14,13};//加入flagboolean flag=false;for (int i = 0; i <bubble.length-1 ; i++) {for (int j = 0; j <bubble.length-1-i ; j++) {if(bubble[j]<bubble[j+1]){swap(bubble,j,j+1);flag=true;}}//如果上次没有元素的交换那么退出循环if(!flag){break;}}System.out.println(Arrays.toString(bubble));}

2.选择排序

就是每次和冒泡差不多选出最大或最小的值来,但不需要那么多次交换每次找出最小的值

    public static void main(String[] args) {int[]choose={12,2,9,3,4,7,14,13};for (int i = 0; i <choose.length-i-1 ; i++) {int s=i;//找到index位置最小的值for (int j = s+1; j <choose.length ; j++) {if(choose[s]<choose[j]){s=j;}}if(s!=i){swap(choose,s,i);}}System.out.println(Arrays.toString(choose));}public static void swap(int[]irr,int j,int k){irr[j]^=irr[k];irr[k]^=irr[j];irr[j]^=irr[k];}

冒泡比选择更稳定如果有序则不需要操作很简单。


选择:第二轮最后黑2交换红5
冒泡: 第一轮最后红2交换红5

3.插入排序算法

保证前面排序是正确的然后依次比较性能强于冒泡和选择排序

    public static void main(String[] args) {int[]insert={12,2,9,3,4,7,14,13};for (int i = 1; i <insert.length ; i++) {int point=insert[i];int j=i-1;while(j>=0){if(point>insert[j]){insert[j+1]=insert[j];}else{break;}j--;}if(j!=i-1){insert[j+1]=point;}}System.out.println(Arrays.toString(insert));}```

蒜香法棍--排序算法相关推荐

  1. 蒜香法棍--动态规划

    动态规划就是根据状态的改变来推导出公式最后解决问题. 1.首先要确定dp数组是表示什么的. ps:一般都是直接表示题的时候答案. 2.要确定递归公式. ps:也是最重要的一点,你的这次递归和上次递归改 ...

  2. 蒜香法棍--疑难杂症

    1.接雨水 主要的解决思路是用算出当前节点的左边最大的高度和右边最大高度相减取最小,就可以处理了 class Solution {public int trap(int[] height) {int ...

  3. 图文+动画讲解排序算法总结!!

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 大数据肌肉猿 责编 | 阿秃 很多同学算法零基础,我都不建议他们直接去刷「剑指offer」和「LeetCode」,可以从常见的查找和 ...

  4. JS 实现十大排序算法

    文章目录 前言 零.十大排序 一.冒泡排序(bubbleSort) 二.选择排序(selectionSort) 三.插入排序(insertSort) 四.希尔排序(shellSort) 五.归并排序( ...

  5. 齐姐漫画:排序算法(二)

    归并排序 那我们借用 cs50 里的例子,比如要把一摞卷子排好序,那用并归排序的思想是怎么做的呢? 首先把一摞卷子分成两摞: 把每一摞排好序: 把排好序的两摞再合并起来. 感觉啥都没说? 那是因为上面 ...

  6. 数据结构和算法之五:排序算法二

    数据结构基础之排序算法二 学习算法,排序算法当然是不能少的,这次我们来学习一下基础的选择排序,冒泡排序,以及大名鼎鼎的快速排序. 选择排序 选择排序,非常好理解,就是找最小的数放到第一位,然后从第二个 ...

  7. 伍六七带你学算法 进阶篇-排序算法

    给定一个整数数组 nums,将该数组升序排列. 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 各排序算 ...

  8. C++排序算法实现(更新中)

    比较排序法:如冒泡排序.简单选择排序.合并排序.快速排序.其最优的时间复杂度为O(nlogn). 其他排序法:如桶排序.基数排序等.时间复杂度可以达到O(n).但试用范围有要求. 桶排序:排序的数组元 ...

  9. 十种经典排序算法精粹(c语言版本)

    下面给出这段时间我苦心研究验证过的十种经典排序算法的C语言版本,即下面的排序算法: 插入排序,shell排序,冒泡排序,快速排序,选择排序,堆排序,归并排序,桶排序,基数排序和计数排序.整理出来以作备 ...

最新文章

  1. Codeforces Round #155 (Div. 2)
  2. 3名游客在长城墙体上刻字,八达岭长城:已会同公安部门调查取证
  3. JVM内存模型:运行时栈帧结构
  4. 我的世界光影mod怎么用_用“戏剧化”光影艺术 唤醒千年沉睡世界!
  5. ubuntu下vim + ctags + taglist配置和使
  6. 在拉取和推送都存在,冲突时,用命令行解决
  7. 使用Roboguice依赖注入规划Android项目
  8. Android之Fragment 真正的完全解析(上)
  9. 潭州课堂25班:Ph201805201 第十课 类的定义,属性和方法 (课堂笔记)
  10. 联想U310刷白名单更换无线网卡纪实
  11. Lammps:Python上Ovito模块配置的问题与解决
  12. 游戏配置文件加密工具(附源码)
  13. c语言星空特效源代码,星空 - 网页特效代码|网页特效观止 - 让你的网页靓起来!...
  14. 动态规划练习一之最低通行费
  15. 解决Maven仓库代理时gexin的jar包一直下载不下来的问题
  16. 51单片机数码管密码锁
  17. 【文件监控】之一:理解 ReadDirectoryChangesW part1
  18. 毕业设计源码之“油价”小程序
  19. 世博之旅 (1/2)
  20. 单片机学习笔记————组合BCD码,非组合BCD码,以及数值三者之间的相互转换和关系

热门文章

  1. python中iloc和loc的用法
  2. 36 岁未婚大龄女,不找对象偏偏要学编程 | 程序员有话说
  3. iOS开发—使用GCD下载图片
  4. 我的创作一周年纪念日
  5. css3 实现盒子四周光晕_使用CSS3实现的光晕特效
  6. 最近在搞SPI Flash的驱动,有一个问题迟迟不能解决
  7. 插入图片和背景图片区别
  8. NFV 及其与sdn
  9. Windows编程-GetModuleHandle,GetCurrentProcess,OpenProcess的区别?
  10. shell中$?代表什么意思