java之冒泡排序、选择排序、快速排序、插入排序、java8排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rodge_Rom/article/details/82938859
package cn.com.javatest.sort;

import org.apache.commons.lang3.StringUtils;

/**
* 常用排序方法
*
* @author:  Rodge
* @time:    2018年10月4日 下午5:16:22
* @version: V1.0.0
*/
public class SortTest {

	/**
	 * 冒泡排序:比较相邻的元素,如果第一个比第二个大,则交换位置。
	 * @param numbers
	 */
	public static void bubbleSort(int[] numbers) {
		int temp; //中间变量
		int size = numbers.length; //数组长度
		for (int i = 0; i < size - 1; i++) {
			for (int j = i + 1; j < size; j++) {
				if (numbers[i] > numbers[j]) {
					temp = numbers[i];
					numbers[i] = numbers[j];
					numbers[j] = temp;
				}
			}
		}
	}
	
	/**
	 * 快速排序:从数列中挑出一个元素,称为“基准”,
	 * 重新排序所有元素比基准小的摆放在其前面,反之在后面。
	 * @param numbers
	 * @param start
	 * @param end
	 */
	public static void quickSort(int[] numbers, int start, int end) {
		if (start < end) {
			int base = numbers[start]; //第一个数作为基准
			int temp; //中间变量
			int i = start, j = end;
			do {
				while (numbers[i] < base && i < end) {
					i ++;
				}
				while (numbers[j] > base && j > start) {
					j --;
				}
				if (i <= j) {
					temp = numbers[i];
					numbers[i] = numbers[j];
					numbers[j] = temp;
					i ++;
					j --;
				}
			} while (i <= j);
			if (start < j) {
				quickSort(numbers, start, j);
			}
			if (end > i) {
				quickSort(numbers, i, end);
			}
		}
	}
	
	/**
	 * 选择排序:在未排序序列中找到最小元素,存放在起始位置。
	 * @param numbers
	 */
	public static void selectSort(int[] numbers) {
		int size = numbers.length;
		int temp;
		for (int i = 0; i < size; i++) {
			int k = i;
			for (int j = size - 1; j > i; j--) {
				if (numbers[j] < numbers[k]) {
					k = j;
				}
			}
			temp = numbers[i];
			numbers[i] = numbers[k];
			numbers[k] = temp;
		}
	}
	
	/**
	 * 插入排序:从第一个元素开始,取出下一元素,如果元素大于下一元素,则交换位置。
	 * @param numbers
	 */
	public static void insertSort(int[] numbers) {
		int size = numbers.length;
		int temp;
		int j;
		for (int i = 0; i < size; i++) {
			temp = numbers[i];
			for (j = i; j > 0 && temp < numbers[j-1]; j--) {
				numbers[j] = numbers[j-1];
			}
			numbers[j] = temp;
		}
	}
	
	/**
	 * Java8 Arrays.sort()
	 * @param numbers
	 */
	public static void sort(int[] numbers) {
		Arrays.sort(numbers);
	}
	
	/**
	 * Java8 Arrays.parallelSort()
	 * @param numbers
	 */
	public static void parallelSort(int[] numbers) {
		Arrays.parallelSort(numbers);
	}
	
	public static void main(String[] args) {
		int numbers[] = {23,4,54,12,34,56,3,24,5,88,10,22,100,76};
//		bubbleSort(numbers);
//		quickSort(numbers, 0, numbers.length-1);
//		selectSort(numbers);
//		insertSort(numbers);
//		String str = StringUtils.join(numbers, ' ', 0, numbers.length);
//		System.err.println(str);		
//		sort(numbers);
//		System.err.println(Arrays.toString(numbers));
		parallelSort(numbers);
		System.err.println(Arrays.toString(numbers));
	}
}

猜你喜欢

转载自blog.csdn.net/Rodge_Rom/article/details/82938859