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;
}
}
}
}
}
0
投稿
猜你喜欢
- AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作。AtomicInteger 作为java.util.
- 2017年一直以来在公司负责爬虫项目相关工程,主要业务有预定、库存、在开发中也遇到很多问题,随手记录一下,后续会持续更新。chrome、fi
- 昨天有个粉丝加了我,问我如何实现类似shiro的资源权限表达式的访问控制。我以前有一个小框架用的就是shiro,权限控制就用了资源权限表达式
- 一、案例场景在使用 @Autowired 时,你或多或少都会遇过类似的错误:required a single bean, but 2 we
- 周末了,觉得我还有很多作业没有写,针对目前大家对OOM的类型不太熟悉,那么我们来总结一下各种OOM出现的情况以及解决方法。我们把各种OOM的
- 项目里使用了Feign进行远程调用,有时为了问题排查,需要开启请求和响应日志下面简介一下如何开启Feign日志:注:本文基于spring-b
- 一、月份英文简写DateTime dt = DateTime.Now;string MM = dt.AddMonths(-1).ToStri
- JMMJMM是指Java内存模型,不是Java内存布局,不是所谓的栈、堆、方法区。每个Java线程都有自己的工作内存。操作数据,首先从主内存
- 本文实例讲述了Java统计字符串中字符出现次数的方法。分享给大家供大家参考,具体如下:package com.wenzhi;import j
- Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。本篇不涉及其原理,只用代码构建项目简单试用一下其回滚
- 前言碎语今天博主安利一个国产开源的无服务器容器云平台,关注它已经有一年多了,虽然其迭代到现在很多功能还是一直处于测试验证中,但是其设计理念以
- 本文实例讲述了Android编程使用android-support-design实现MD风格对话框功能。分享给大家供大家参考,具体如下:首先
- 1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小
- 编写RedisConfig首先我们要明白RedisConfig中需要包含什么,首先看看我们直接使用RedisTemplate的问题,我们就知
- 目录示例1: EncryptByAes示例2: main示例3: wrapperPublicPriviteKeyTest示例4: initH
- 本文实例讲述了java简单列出文件夹下所有文件的方法。分享给大家供大家参考,具体如下:import Java.io.*;public cla
- using System;using System.Collections.Generic;using System.Linq;
- 在Java中,线程有5中不同状态,分别是:新建(New)、就绪(Runable)、运行(Running)、阻塞(Blocked)和死亡(De
- 主要从以下十几个方面对Hibernate做总结,包括Hibernate的检索方式,Hibernate中对象的状态,Hibernate的3种检
- 线程安全当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协调,这个类