两层嵌套循环,外层控制循环次数,内层循环进行比较

for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length;y++){if(arr[y]>arr[y+1]){}}}

此时的代码有问题,内层循环多比较了已经排好序的部分,都在最后面,需要去掉

        for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x;y++){if(arr[y]>arr[y+1]){}}}

此时的代码有问题,内层循环最后一个元素,无法和它后面的比较,应该去掉

        for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){}}}

判断完后,两个变量交换位置,利用第三方变量

        for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}

java版:

public class ArrayDemo {/*** @param args*/public static void main(String[] args) {int[] arr=new int[]{2,5,4,1};int[] newArr=bubbleSort(arr);for(int x:newArr){System.out.print(x);}}/*** 冒泡排序(正序)* @param arr* @return*/public static int[] bubbleSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}return arr;}
}

PHP版:

<?php
class ArrayDemo{public static function main(){$arr=array(2,5,4,1);print_r(ArrayDemo::bubbleSort($arr));//输出 Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )
    }/*** 冒泡排序(正序)* @param arr* @return*/public static function bubbleSort($arr){for($x=0;$x<count($arr)-1;$x++){for($y=0;$y<count($arr)-$x-1;$y++){if($arr[$y]>$arr[$y+1]){$temp=$arr[$y];$arr[$y]=$arr[$y+1];$arr[$y+1]=$temp;}}}return $arr;}}ArrayDemo::main();

选择排序和冒泡排序性能都很低,提高性能的方法,当需要换位置的时候,先不换,先把需要换位置的角标放到栈内存中,等最后一次性在堆内存中交换

排序中最快的是 希尔排序

[javaSE] 数组(排序-冒泡排序)相关推荐

  1. 2022-04-07 西安 javaSE(04) 方法可变参数、重载、递归,数组、冒泡排序、二分查找、动态操作,二维数组、jvm内存区域划分

    方法 1.方法传递参数 形参是基本类型: 1.参数传递的内容是该基本类型的数据值.   2.对形式参数的改变不会影响实际参数的数据值 形参是引用类型:     1.参数传递的是地址值     2.对形 ...

  2. c# 编程入门第六课常量,枚举,枚举转换成其他类型变量(枚举和int,转 string字符串转枚举),结构体,数组,冒泡排序,实际使用排序,方法(函数)

    c# 编程入门第六课 文章目录 c# 编程入门第六课 1. 常量 2. 枚举 3. 枚举转换成其他类型变量 3.1 枚举和int 3.2 转string 3.2 字符串转枚举 4.结构体 5.数组 7 ...

  3. JavaSE - 数组的相关算法

    JavaSE - 数组的相关算法 本节学习目标: 了解并掌握Java中随机数的生成方式: 了解常用的数组赋值算法: 了解并掌握浅拷贝与深拷贝的区别与理解 了解并掌握常用的数组查找算法: 了解并掌握常用 ...

  4. 常用排序:冒泡排序与快速排序详解,看完这篇就够了!风马博客

    常用排序:冒泡排序与快速排序详解. 在排序算法中,冒泡排序和快速排序可以算是排序算法入门必会的两种排序了,今天和大家来分析一下如何快速理解并掌握这两种排序.首先冒泡排序是初学者最常用的排序,所以我们先 ...

  5. JavaScript 遍历数组 翻转数组与冒泡排序法

    使用遍历数组的方式   翻转数组中的元素  ['a','b','c','d']    ['d','c','b','a'] 代码实例: //使用遍历数组的方式,翻转数组中的元素 var arr = [' ...

  6. 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并

    数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...

  7. java:数组的冒泡排序

    eclipse使用Java实现数组的冒泡排序 文章目录 前言 方案 代码实现 前言 声明一个数组,包含10个元素,给每个元素赋值0~99的随机整数,使用冒泡算法对数组进行升序排序,并输出排序后的值 方 ...

  8. c语言比较数组中的元素大小,C语言之数组的冒泡排序

    原标题:C语言之数组的冒泡排序 在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如: l 一个保存了班级学号的数组,排序后更容易分区好学 ...

  9. shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)

    文章目录 shell函数 了解函数 函数定义 递归函数 举例子 shell数组 定义数组 数组包括的数据类型与数组操作 数组操作 举例(快速创建数组.奇数数组) 冒泡排序法 调试命令 set命令 ba ...

  10. javascript中数组、冒泡排序、函数及函数实参形参、arguments伪数组、异步函数等介绍

    数组: 指一组有顺序的数据,其作用就是用来一次性存储多个数据.(数组元素:数组中的每一个数据:数组长度:数据中元素的个数:数组索引:用来存储或访问数组中的数据,也叫下标,索引从0开始,即第一个数组元素 ...

最新文章

  1. 从单一图像中提取文档图像:ICCV2019论文解读
  2. Ubuntu安装教程【超多图】
  3. Python—实训day11—Pyecharts绘图
  4. 可视化ASP.Net Core Web API健康检查
  5. Java Maven和Gradle构建的主题缓存
  6. ExtJS中的Grid分页
  7. 分布式和微服务是什么?二者的区别又是什么?
  8. 深入理解Nginx及使用Nginx实现负载均衡
  9. python爬虫百度图片_python爬取百度图库多张图片
  10. Linux: sctp 实例
  11. css的div垂直居中的方法,CSS使DIV内容垂直居中的方法
  12. springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
  13. 计算机论文英语单词,英语单词
  14. C++中的指针类型与构造函数,析构函数
  15. win7(32bit)下完整的搭建apache(2.2.x)+openssl(0.9.6-1.0.1升级)过程
  16. ipad部分截屏方法
  17. 爬虫工程师必备技术栈——加密解密以及字符编码原理
  18. mysql 主键列_MySQL列属性 之 主键
  19. 刘强东在耶鲁北京中心演讲(2015-8):商城+金融+3农+生鲜
  20. css中元素横向放置,使用CSS将元素放置到右侧

热门文章

  1. ITK:比较两个图像并将输出像素设置为最小值
  2. VTK:Shaders之CubeMap
  3. Qt Creator配置项目
  4. OpenGL springmass弹簧质量模拟器的实例
  5. c++Insertion Sort插入排序的实现算法(附完整源码)
  6. C++smallest circle 获取外接给定点集的最小圆的中心和半径算法(附完整源码)
  7. c++类与类的聚合(Aggregation)关系
  8. 二阶龙格库塔公式推导_DeepFM原理推导
  9. insert into 时间_2021国家公务员考试报名时间_国考什么时候报名
  10. linux制作openssl rpm,CentOS 7 定制 OpenSSL RPM 包