package com.tnt.sortingalgorithm;
/**
* 冒泡排序
*
* @author FrankcoLuo
*
*/
public class Bubblesort {
public void bubbleSortFunc1(int[] arr, int length) {
int i = length, j;
int temp;
while (i > 0) {
for (j = 0; j < i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
i--;
}
}
/**
* 標準的冒泡排序
*
* @param arr
* @param length
*/
public void bubbleSortFunc2(int[] arr, int length) {
// 假定兩兩交換髮生在數組最後的兩個位置
int exchange = length - 1;
while (exchange > 0) {
// 記錄下發生數據交換的位置
int bound = exchange;
// 假定本趟比較沒有數據交換
exchange = 0;
for (int i = 0; i < bound; i++) {
if (arr[i] > arr[i + 1]) {
// 交換
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
exchange = i + 1;
}
}
}
}
public static void main(String[] args) {
int[] arr = { 234, 264, 34, 358, 2, 4, 6, 54, 14, 25, 5, 24646, 2, 5, 5 };
//方式一
// new Bubblesort().bubbleSortFunc1(arr, arr.length);
//方式二
new Bubblesort().bubbleSortFunc2(arr, arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}