Java数据结构及算法实例:冒泡排序 Bubble Sort
作者:junjie 发布时间:2022-10-17 08:39:45
标签:Java,数据结构,算法,冒泡排序,Bubble,Sort
/**
* 冒泡排序估计是每本算法书籍都会提到的排序方法。
* 它的基本思路是对长度为N的序列,用N趟来将其排成有序序列。
* 第1趟将最大的元素排在序列尾部,第2趟将第2大的元素排在倒数第二的位置,
* 即每次把未排好的最大元素冒泡到序列最后端。
* 该排序方法实际上分为两重循环,外层循环:待排元素从数组的第1个元素开始。
* 内层循环:待排元素从数组的第1个元素开始,直到数组尾端未排过的元素。
* 在内循环中,如果遇到前面元素比其后的元素大就交换这两个元素的位置。
* 由此可见冒泡排序的复杂度是O(n^2)
*/
package al;
public class BubbleSort {
/*
* 冒泡排序 Java语言编写,可以直接运行 输入:n个数<a1,a2,,an>
* 输出:输入序列的一个排列<a1',a2',,an'>,其中a1'<=a2'<=<=an' 待排的数也称为key 复杂度:O(n^2) 输出结果:9
* 10 14 14 21 43 50 77 例子:高矮个站队
*/
public static void main(String[] args) {
BubbleSort bubbleSort = new BubbleSort();
int[] elements = { 14, 77, 21, 9, 10, 50, 43, 14 };
// sort the array
bubbleSort.sort(elements);
// print the sorted array
for (int i = 0; i < elements.length; i++) {
System.out.print(elements[i]);
System.out.print(" ");
}
}
/**
* @author
* @param array
* 待排数组
* @return void
*/
public void sort(int[] array) {
int i, j;
int tmp;
for (i = 0; i <= (array.length - 1); i++) { // outer loop
for (j = 0; j < (array.length - 1 - i); j++) { // inner loop
if (array[j] > array[j + 1]) {
tmp = array[j];
array[j] = array[j + 1];
array[j + 1] = tmp;
}
}
}
}
}


猜你喜欢
- 背景Java8的stream接口极大地减少了for循环写法的复杂性,stream提供了map/reduce/collect等一系列聚合接口,
- c# Invoke与BeginInvoke最近在学习线程时,发现当我创建的线程需要访问UI界面的时,会发生异常,原因是我在跨线程调用主线程的
- Sequence序列Sequence 是Kotlin标准库提供的一种容器类型。它和Iterable一样具备对集合进行多步骤操作能力,但是却是
- 在拿到一个 Stream 如何优雅将这个 Stream 保存到代码最优雅的方法应该是通过 CopyTo 或 CopyToAsync 的方法u
- WebSocket介绍WebSocket是HTML5开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在WebSocket API中
- 我在 android里面 使用html5的 localStorage 为什么存不进去也读不出来呀?网上搜了好多都没效果mainWebView
- 前言不得不说,JSP 现在已经是一门十分老旧的技术了,学习编程时,不仅要学习优秀的前言技术,还要对基础有一定的把握,所以学习 JSP 时,我
- 一、什么是Activity?简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面。在一个应用程序中通常由多个Activi
- 简介记录一个利用系统分享功能进行图片分享的工具类(代码是用Kotlin写的,都是比较简单的语法,部分可能需要自定义的地方都已经标出)。调用方
- 封装类用于阻止系统休眠的C#类。以下是代码注释的解释:DllImport("kernel32.dll"):定义了一个AP
- 使用Post添加数据到数据库出现方块乱码解决方法,在web.xml里最前面添加过滤器,代码如下,放在最前面,因为有优先级,要首先拦截<
- 本文实例为大家分享了android短信管理器SmsManager的具体代码,供大家参考,具体内容如下需要注册的权限<uses-perm
- 本文实例为大家分享了java二叉查找树的具体代码,供大家参考,具体内容如下package 查找;import edu.princeton.c
- 报错:Caused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLeni
- 本文实例为大家分享了Android内存中存储用户名和密码的方法,供大家参考,具体内容如下首先是配置文件:<LinearLayout x
- 多层嵌套JSON类型数据解析简单来说:“key”:“value&rdqu
- C语言是一种高级编程语言,其最重要的特点之一是它允许程序员使用函数来组织代码。函数是一组相关的指令的集合,可以在程序中多次调用。在 C语言中
- 1.sonarQube的简介SonarQube是一款自动化代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与你现有的工作流集成,以
- 前几天的一个晚上突然想到微信红包应该有一个随机算法,就自己试着写了下,也不知道对不对,看了看网上的说法,好像到现在为止官方也没有给出一个确切
- 本文实例为大家分享了Rxjava实现轮询定时器的具体代码,供大家参考,具体内容如下作用1、实现了延迟若干毫秒后,执行next操作,只执行一次