package hello;
import java.util.Random;
/**
*冒泡排序 时间级别:O(N*N)【注】效率低,排序速度慢
*/
class BubbleSort {
long[] a;
int nElems;
// constructor
public BubbleSort(int max) {
a = new long[max];
nElems = 0;
}
// put element into array
public void insert(long value) {
a[nElems] = value;
nElems++;
}
// displays array contents
public void display() {
for (int i = 0; i < nElems; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
/**
* 思路: 将最小的数据项放在数组的最开始(数组下标为0),并将最大数据项放在
* 数组的最后(数组下标为nElems-1).外层for循环的计数器out从数组的
* 最后开始,即out等于nElems-1,每经过一次循环out-1.下标大于out的
* 数据项都已经是排好序的了.变量out在每完成一次内部循环(计数器为in)后 就左移一位,因此算法就不在处理那些已经排好序的数据.
* 内层for循环计数器in从数组的最开始算起,即in=0,每完成一次内部循环体加1,
* 当它等于out时结束一次循环.在内层for循环体中,数组下标为in和in+1的两个数据项
* 进行比较,如果下标为in的数据项大于下标为in+1的数据项,则交换两个数据项.
*/
public void bubbleSort() {
int out, in;
for (out = nElems - 1; out > 1; out--) {
// outer loop(backward)
for (in = 0; in < out; in++) {
// inner loop(forward)
if (a[in] > a[in + 1]) {// out of order?
swap(in, in + 1);// swap them
}
}
}
}
void swap(int one, int two) {
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
}
/*
*
* 测试
*/
public class BubbleSortApp {
public static void main(String[] args) {
int maxSize = 100;
BubbleSort arr = new BubbleSort(maxSize);
Random r = new Random();
// insert 10 items
for (int i = 0; i < 10; i++) {
arr.insert(r.nextInt(100));
}
arr.display();
arr.bubbleSort();
arr.display();
}
}
分享到:
相关推荐
冒泡排序详解,简单而详细的讲清楚了,什么是冒泡排序。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首...
下面我们将深入探讨冒泡排序的工作原理、Java代码实现以及其效率分析。 ### 冒泡排序的工作原理 冒泡排序的基本思想是,重复地走访过要排序的元素列表,依次比较相邻的两个元素,如果它们的顺序(如从小到大)错误...
JAVA排序大全 冒泡 快速 选择 归并排序
以上三个知识点总结了关于 Java 排序的一些基本应用,包括基础的冒泡排序算法、使用标准库 `Collections.sort()` 进行排序以及使用 `RuleBasedCollator` 实现国际化排序等。这些技术对于编写高效、可维护的 Java ...
在这个Java GUI实现的冒泡排序项目中,我们利用了NetBeans工具来设计用户界面,使用户能够直观地看到排序的过程。 首先,我们要理解冒泡排序的基本原理。冒泡排序的核心在于两两比较相邻元素,如果前一个元素大于...
java冒泡排序代码,亲测能用,控制台输入数据,自动排序
冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python实现冒泡排序算法 冒泡排序:应用Java和Python...
冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至...
java冒泡排序 代码为排序源代码 简洁明了 无其他
* 冒泡排序: * 每次在无序队列里将相邻两个数一次进行比较, * 将小数调到前面,逐次比较,直至将最大的数移到 * 最后。将剩下的N-1个数继续比较,将次大数移至 * 倒数第二位。
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
### Java冒泡排序方法详解 #### 一、冒泡排序简介 冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到...
下面我们将详细介绍如何用Java实现冒泡排序及其工作原理。 冒泡排序的工作原理: 冒泡排序的基本思想是重复地遍历待排序的序列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历序列的工作是重复地...
在Java中实现冒泡排序,我们需要定义一个方法,通常是一个公共的静态方法,因为排序不涉及对象的状态,只涉及数组或列表的元素顺序。下面是一个简单的Java冒泡排序实现: ```java public class BubbleSort { ...
1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本思路是使用两个for循环,外层循环控制比较的轮数,内层循环用于...
1.冒泡排序的原理:每次都从第一个元素开始(索引0),向后两两比较,只要后面的比前面的大,就交换(从大到小) 2.通过画图分析,5个数字排4趟,n数字排n-1趟,而外层的for循环代表的是循环的趟数,所以外层循环的结束条件是...
本篇文章将详细讲解快速排序、冒泡排序和插入排序这三种常用的排序算法,并通过Java代码示例进行演示。 **快速排序** 快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare于1960年提出。其基本思想是...
java算法,快速排序、冒泡排序、选择排序 快速排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51822361 冒泡排序文章:http://blog.csdn.net/yanwenyuan0304/article/details/51819045
java实现最优冒泡排序。冒泡排序的时间复杂度为O(n2)。
### Java冒泡排序算法知识点详解 #### 一、冒泡排序基本概念 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是...