IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA 冒泡排序 -> 正文阅读

[Java知识库]JAVA 冒泡排序

一、冒泡排序简述(升序排序)

比较相邻的两个元素大小,如果左边的元素大于右边的元素,那么就交换连个元素的位置。
对每一对相邻的元素做上面相同的工作,从开始第一对到最后一对,执行完一轮后就能得到最后一个元素是最大的。
重复以上步骤,每轮比较都不比较上一轮得到的最大的元素,即需要进行size()-1次。
第一轮对n(n即为长度)个元素进行n-1次比较,第一轮结束第n个元素就是本轮中最大的;
第二轮对n-1个元素进行n-1-1次比较,第二轮结束第n-1个元素就是本轮中最大的;

以此类推,每轮比较的元素会越来越少,直到没有需要再比较的元素。

二、代码案例

利用双层for循环来进行冒泡排序

package sort;

import java.util.ArrayList;
import java.util.List;

public class BubbleSort {
	/**
	 * 冒泡排序升序
	 * @param list 排序的集合
	 * @return 排序后的集合
	 * 升序满足左边的数比右边的数小
	 */
	public List<Integer> bubbleSortAsc(List<Integer> list){
		// 外层for循环控制比较多少轮
		for(int i=0; i<list.size()-1; i++){
			// 内层for循环控制每轮比较多少次
			for(int j=0; j<list.size()-i-1; j++){
				// 获得左右两个数
				int leftNum = list.get(j);
				int rightNum = list.get(j+1);
				// 比较大小
				if(leftNum > rightNum){
					// 左边的数大于右边的数,互换位置
					list.set(j, rightNum);
					list.set(j+1, leftNum);
				}
			}
		}
		// 返回调用点集合
		return list;
	}
	/**
	 * 冒泡排序降序
	 * @param list 排序的集合
	 * @return 排序后的集合
	 * 降序满足左边的数比右边的数大
	 */
	public List<Integer> bubbleSortDesc(List<Integer> list){
		for(int i=0; i<list.size()-1; i++){
			for(int j=0; j<list.size()-i-1; j++){
				int leftNum = list.get(j);
				int rightNum = list.get(j+1);
				if(leftNum < rightNum){
					// 左边的数小于右边的数,互换位置
					list.set(j, rightNum);
					list.set(j+1, leftNum);
				}
			}
		}
		return list;
	}
	/**
	 * 测试
	 * @param args
	 */
	public static void main(String[] args) {
		// 创建List集合
		List<Integer> nList = new ArrayList<Integer>();
		// 添加数据
		nList.add(52);
		nList.add(42);
		nList.add(82);
		nList.add(62);
		nList.add(102);
		nList.add(12);
		nList.add(22);
		nList.add(32);
		nList.add(2);
		nList.add(92);
		nList.add(72);
		// 实例化BubbleSort
		BubbleSort bs = new BubbleSort();
		// 调用方法并打印结果
		System.out.println("升序排序");
		System.out.println(bs.bubbleSortDesc(nList));
		System.out.println("降序排序");
		System.out.println(bs.bubbleSortAsc(nList));
	}
}

运行结果:
在这里插入图片描述

三、Debug调试(代码出错时解决方法)

  1. 在需要断点的行的行号前打断点(双击)
  2. Debug运行(右键弹出菜单选择Debug As)
  3. F5依次执行代码,查看每次循环的结果,找到出错点
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:35:34  更:2021-07-23 10:36:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/18 18:12:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码