欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[Java数据结构]简单排序之冒泡排序

程序员文章站 2024-03-16 14:13:46
...


》冒泡排序图解

冒泡算是排序算法中简单的一种,只比较两个数,前者大于后者则交换位置。

[Java数据结构]简单排序之冒泡排序

》思路:

外层for循环的计数器Out从数据的最后开始,下标大于out是已经排好序的。内存for循环从In开始,没完成一次+1,in和In+1比较,如果in>in+1,则交换。

》代码

package 简单排序;

/*冒泡排序 
 * 算法复杂度为 O(N^2)
 * 两个循环互相嵌套
 * */

public class Bubble {

	private long[] a;
	private int nElems; // data的个数

	public Bubble(int max) {// 构造方法

		a = new long[max];
		nElems = 0;

	}

	public void insert(long value) {// 插入数据
		a[nElems] = value;
		nElems++;

	}

	public void display() {// 显示数据

		for (int i = 0; i < nElems; i++) {
			System.out.print(a[i] + " ");
		}

	}

	public void bulleSort() {// 冒泡排序

		int in;
		int out;// out作为计数器,当一个内循环完成,最右边的数就是已经排好的数,并且最右端的一定是最大的

		for (out = nElems - 1; out > 1; out--) {
			for (in = 0; in < out; in++) {
				if (a[in] > a[in + 1]) {

					long temp = a[in];
					a[in] = a[in + 1];
					a[in + 1] = temp;

				}

			}

		}

	}

}

class BubbleSort {

	public static void main(String[] args) {

		int maxSize = 100;
		Bubble arr = new Bubble(maxSize);

		arr.display();

		arr.insert(33);
		arr.insert(53);
		arr.insert(45);
		arr.insert(36);
		arr.insert(56);

		arr.bulleSort();
		arr.display();

	}

}