[Java数据结构]简单排序之冒泡排序
程序员文章站
2024-03-16 14:13:46
...
》冒泡排序图解
冒泡算是排序算法中简单的一种,只比较两个数,前者大于后者则交换位置。
》思路:
外层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();
}
}