[javaSE] 数组(排序-冒泡排序)
两层嵌套循环,外层控制循环次数,内层循环进行比较
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] 数组(排序-冒泡排序)相关推荐
- 2022-04-07 西安 javaSE(04) 方法可变参数、重载、递归,数组、冒泡排序、二分查找、动态操作,二维数组、jvm内存区域划分
方法 1.方法传递参数 形参是基本类型: 1.参数传递的内容是该基本类型的数据值. 2.对形式参数的改变不会影响实际参数的数据值 形参是引用类型: 1.参数传递的是地址值 2.对形 ...
- c# 编程入门第六课常量,枚举,枚举转换成其他类型变量(枚举和int,转 string字符串转枚举),结构体,数组,冒泡排序,实际使用排序,方法(函数)
c# 编程入门第六课 文章目录 c# 编程入门第六课 1. 常量 2. 枚举 3. 枚举转换成其他类型变量 3.1 枚举和int 3.2 转string 3.2 字符串转枚举 4.结构体 5.数组 7 ...
- JavaSE - 数组的相关算法
JavaSE - 数组的相关算法 本节学习目标: 了解并掌握Java中随机数的生成方式: 了解常用的数组赋值算法: 了解并掌握浅拷贝与深拷贝的区别与理解 了解并掌握常用的数组查找算法: 了解并掌握常用 ...
- 常用排序:冒泡排序与快速排序详解,看完这篇就够了!风马博客
常用排序:冒泡排序与快速排序详解. 在排序算法中,冒泡排序和快速排序可以算是排序算法入门必会的两种排序了,今天和大家来分析一下如何快速理解并掌握这两种排序.首先冒泡排序是初学者最常用的排序,所以我们先 ...
- JavaScript 遍历数组 翻转数组与冒泡排序法
使用遍历数组的方式 翻转数组中的元素 ['a','b','c','d'] ['d','c','b','a'] 代码实例: //使用遍历数组的方式,翻转数组中的元素 var arr = [' ...
- 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并
数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...
- java:数组的冒泡排序
eclipse使用Java实现数组的冒泡排序 文章目录 前言 方案 代码实现 前言 声明一个数组,包含10个元素,给每个元素赋值0~99的随机整数,使用冒泡算法对数组进行升序排序,并输出排序后的值 方 ...
- c语言比较数组中的元素大小,C语言之数组的冒泡排序
原标题:C语言之数组的冒泡排序 在实际开发中,有很多场景需要我们将数组元素按照从大到小(或者从小到大)的顺序排列,这样在查阅数据时会更加直观,例如: l 一个保存了班级学号的数组,排序后更容易分区好学 ...
- shell函数与数组(了解函数,递归函数运用,了解数组,创建基数和偶数数组,冒泡排序,调试命令)
文章目录 shell函数 了解函数 函数定义 递归函数 举例子 shell数组 定义数组 数组包括的数据类型与数组操作 数组操作 举例(快速创建数组.奇数数组) 冒泡排序法 调试命令 set命令 ba ...
- javascript中数组、冒泡排序、函数及函数实参形参、arguments伪数组、异步函数等介绍
数组: 指一组有顺序的数据,其作用就是用来一次性存储多个数据.(数组元素:数组中的每一个数据:数组长度:数据中元素的个数:数组索引:用来存储或访问数组中的数据,也叫下标,索引从0开始,即第一个数组元素 ...
最新文章
- 从单一图像中提取文档图像:ICCV2019论文解读
- Ubuntu安装教程【超多图】
- Python—实训day11—Pyecharts绘图
- 可视化ASP.Net Core Web API健康检查
- Java Maven和Gradle构建的主题缓存
- ExtJS中的Grid分页
- 分布式和微服务是什么?二者的区别又是什么?
- 深入理解Nginx及使用Nginx实现负载均衡
- python爬虫百度图片_python爬取百度图库多张图片
- Linux: sctp 实例
- css的div垂直居中的方法,CSS使DIV内容垂直居中的方法
- springboot毕设项目流浪动物救助和领养平台e1yqy(java+VUE+Mybatis+Maven+Mysql)
- 计算机论文英语单词,英语单词
- C++中的指针类型与构造函数,析构函数
- win7(32bit)下完整的搭建apache(2.2.x)+openssl(0.9.6-1.0.1升级)过程
- ipad部分截屏方法
- 爬虫工程师必备技术栈——加密解密以及字符编码原理
- mysql 主键列_MySQL列属性 之 主键
- 刘强东在耶鲁北京中心演讲(2015-8):商城+金融+3农+生鲜
- css中元素横向放置,使用CSS将元素放置到右侧
热门文章
- ITK:比较两个图像并将输出像素设置为最小值
- VTK:Shaders之CubeMap
- Qt Creator配置项目
- OpenGL springmass弹簧质量模拟器的实例
- c++Insertion Sort插入排序的实现算法(附完整源码)
- C++smallest circle 获取外接给定点集的最小圆的中心和半径算法(附完整源码)
- c++类与类的聚合(Aggregation)关系
- 二阶龙格库塔公式推导_DeepFM原理推导
- insert into 时间_2021国家公务员考试报名时间_国考什么时候报名
- linux制作openssl rpm,CentOS 7 定制 OpenSSL RPM 包