03_java数组和冒泡排序
来源:互联网 发布:免费网络拍卖平台 编辑:程序博客网 时间:2024/06/03 18:22
一、数组排序
关于数组排序,常见的有两种,一是选择排序,二是冒泡排序,下面分别来介绍这两种排序方法。
A,选择排序
画个图来便于理解
首先我们定义一个数组,int[] arr = new int[]{43,23,74,4,27},首先,我们把数组中的第一个元素依次的与其他元素进行比较,定义中的数组第一个元素是43,第二个是23,如果第一个元素大于第二个元素,则交换他们的位置,此时43与23交换位置,然后再拿第一个元素与第三个元素之间进行比较,同理,如果第一个元素大于第三个元素,则交换他们的位置,不断的如此进行比较,知道与最后一个元素进行比较,此时我们得到的第一个元素即为数组中的最小值。
接着,我们把数组中第二个元素依次与数组中其他元素进行比较,直到比较完,数组中最后一个元素,此时我们得到数组中第二小的元素。
如上,我们把第三个元素依次与数组中元素进行比较.........直到最后一次比较为止。
总结规律:
外层循环:控制轮数 从0开始到length-1结束
内层循环:控制一轮中比较的次数 从轮数+1开始到length轮数结束
- package cn.itcast2;
- /*
- * 选择排序:
- * 使用每一个元素,与其他元素依次比较
- * 外层循环:控制轮数
- * 从0开始到length-1结束
- * 内层循环:控制一轮中比较的次数
- * 从轮数+1开始到length轮数结束
- */
- public class Demo02_Select {
- public static void main(String[] args) {
- int[] arr = new int[]{43,23,74,4,27};
- for(int i=0; i<arr.length-1; i++) {
- for(int j=i+1; j<arr.length; j++) {
- if(arr[i]>arr[j]){
- int temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- }
- }
- }
- //遍历数组
- for (int i = 0; i < arr.length; i++) {
- int j = arr[i];
- System.out.print(j+" ");
- }
- }
- }
B,冒泡排序
同样作图理解
同样的数组,冒泡排序主要是让相邻的两个元素之间进行比较,此时,比较第一个元素和第二个元素进行比较,如果第一个元素大于第二个元素,则交换他们的位置,接着将第二个元素与第三个元素之间进行比较,如果第二个元素大于第三个元素,则交换他们的位置,以此类推,知道最后两个元素比较完成,此时我们发现最大值已经排列完成。
接着依旧,相邻两个元素进行比较排序,此时我们比第一次少比较了一次,并且获取了,第二大的值。
如上方法,依次进行,知道最后一次前两个元素进行比较排序。
总结规律:
外层循环:控制轮数 从0开始到length-1结束
内层循环:控制一轮中比较的次数 从0开始到length-1-轮数结束
代码如下:
- <pre name="code" class="java">package cn.itcast2;
- /*
- * 冒泡排序:
- * 使用相邻的两个元素依次比较
- * 外层循环:控制轮数
- * 从0开始到length-1结束
- * 内层循环:控制一轮中比较的次数
- * 从0开始到length-1-轮数结束
- */
- public class Demo01_Bubble {
- public static void main(String[] args) {
- int[] arr = new int[]{43,23,74,4,27};
- for(int i=0;i<arr.length-1; i++) {
- for(int j=0;j<arr.length-1-i;j++) {
- if(arr[j]>arr[j+1]) {
- int temp = arr[j];
- arr[j] = arr[j+1];
- arr[j+1] = temp;
- }
- }
- }
- for (int i = 0; i < arr.length; i++) {
- System.out.print(arr[i]+" ");
- }
- }
- }
***********
对于排序,实际开发过程中直接使用的是Arrays.sort(arr)。记得第一次直接使用的时候报错了,系统提示错误,找不到符号,后来发现是忘记导包import java.util.Arrays;
- 03_java数组和冒泡排序
- 数组和冒泡排序
- 数组冒泡排序和字符串冒泡排序
- 冒泡排序_Java
- 二维数组和冒泡排序
- 冒泡排序数字数组和字符串数组
- 数组的选择排序和冒泡排序
- 数组选择排序和冒泡排序
- 数组---冒泡排序和选择排序
- 数组冒泡排序 和 快速排序
- java之数组冒泡排序和list冒泡排序
- 数据结构-03 数组 -冒泡排序
- 基本排序_冒泡排序_Java实现
- 数组组合和冒泡排序JS版
- C#冒泡排序和数组反转
- JAVA数组选择和冒泡排序
- 数组的冒泡排序和折半查找
- 数组的折半查找和冒泡排序
- 64位Win8环境的Python数值分析库安装(原创)
- Windows下PostGIS的安装
- Postgres-XC/XL/X2分布式数据库安装
- hdoj 1575 Tr A 【矩阵快速幂】
- HDU3359 Special Fish (KM匹配)
- 03_java数组和冒泡排序
- 绝对路径 与 相对路径
- 设计模式,手势识别器
- is marked as crashed and should be repaired mysql 数据库 报的这个错误 怎么解决么
- JAVA字符串格式化-String.format()的使用
- 2016阿里巴巴java笔试题
- 用批处理修改IE代理服务器
- class和struct 的区别?
- (总结)CentOS Linux搭建SVN Server配置详解