package com.xingej.algorithm.sort.bubble;
/**
* 自定義數組類
*
* 特點是:帶有冒泡排序功能
*
* 冒泡排序核心:1、從數組的最後一個元素,開始比較;2、兩兩比較,滿足條件的話,就需要進行位置的互換
*
* 實際生活中:國小時,需要根據身高進行座位排序,就可以使用冒泡排序進行。
*
* @author erjun 2017年12月11日 上午9:20:28
*/
public class MyArrayWithBubbleSort {
// 聲明一個數組
private int[] arr;
// 數組,最多能存儲多少個元素
private int maxSize;
// 目前數組裡,有多少個元素;有點類似于指針,索引的意思
private int elements;
public MyArrayWithBubbleSort(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
// 初始化狀态,數組裡的預設元素個數為0
this.elements = 0;
}
public void insert(int value) {
arr[elements++] = value;
}
public void show() {
for (int i = 0; i < elements; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public void bubbleSort() {
// 4 3 2 1,按冒泡排序的話,需要進行3輪比較可以了
for (int i = 0; i < elements - 1; i++) {
// 每一輪比較,找出本輪的最小值
for (int j = elements - 1; j > i; j--) {
// 後面的/下面的水泡 小于 上面的水泡,就移位
if (arr[j] < arr[j - 1]) {
swap(j, j - 1);
}
}
}
}
// 左右值交換
private void swap(int i, int j) {
// java 是引用傳遞
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
單元測試:
package com.xingej.algorithm.sort.bubble;
import org.junit.Test;
public class MyArrayWithBubbleSortTest {
@Test
public void test() {
MyArrayWithBubbleSort bubbleSort = new MyArrayWithBubbleSort(6);
bubbleSort.insert(2);
bubbleSort.insert(3);
bubbleSort.insert(1);
bubbleSort.insert(7);
System.out.println("------排序前----列印輸出------");
bubbleSort.show();
bubbleSort.bubbleSort();
System.out.println("------排序後----列印輸出------");
bubbleSort.show();
}
}
代碼已托管到
https://github.com/xej520/xingej-algorithm