标准的冒泡排序,Bubblesort

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]);
		}
	}
}
 

你可能感兴趣的:(bubblesort)