Java排序最常见的就是冒泡排序了,最近整理了下,分四种情况:
升序,先把最大的放在最后面
bubbleSortByASC_MaxFirst(intArr);升序,先把最小的放在最前面
bubbleSortByASC_MinFirst(intArr);降序,先把最小的放在最后面
bubbleSortByDESC_MinFirst(intArr);降序,先从把最大的放在最前面
bubbleSortByDESC_MaxFirst(intArr);
具体代码如下:
/*******************************************************************************
* @project: Java_Algorithm
* @package: com.burns.java.sort_algorithm
* @file: BubbleSort.java
* @author: Administrator
* @created: 2017年5月16日
* @purpose:
*
* @version: 1.0
*
* Revision History at the end of file.
*
* Copyright 2017 AcconSys All rights reserved.
******************************************************************************/
package com.burns.java.sort_algorithm;
public class BubbleSort {
/**
* 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
*
* @param numbers
* 需要排序的整型数组
*/
public static int[] intArr = { 49, 38, 65, 97, 76, 13, 27, 48 };
public static void main(String[] args) {
System.out.println("冒泡排序之前的数组:");
for (int i : intArr) {
System.out.print(i + "、");
}
System.out.println();
// 升序,先把最大的放在最后面
// bubbleSortByASC_MaxFirst(intArr);
s // 升序,先把最小的放在最前面
// bubbleSortByASC_MinFirst(intArr);
// 降序,先把最小的放在最后面
// bubbleSortByDESC_MinFirst(intArr);
// 降序,先从把最大的放在最前面
// bubbleSortByDESC_MaxFirst(intArr);
System.out.println("冒泡排序之后的数组:");
for (int i : intArr) {
System.out.print(i + "、");
}
}
/**
* 此排序是升序排序,而且是先把最大的先放在最后。所以j最小为0,最大为size - 1 - i。
*
* @param numbers
*/
public static void bubbleSortByASC_MaxFirst(int[] numbers) {
int temp = 0;
int size = numbers.length;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (numbers[j] > numbers[j + 1]) // 交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
System.out.println("第" + i + "---" + j + "次排序后:===============");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
System.out.println("第" + i + "次排序后:-----------------");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
}
/**
* 此排序是升序排序,而且是先把最小的先放在最前。所以j最小为不大于i,最大为size - 1。
*
* @param numbers
*/
public static void bubbleSortByASC_MinFirst(int[] numbers) {
int temp = 0;
int size = numbers.length;
for (int i = 0; i < size - 1; i++) {
for (int j = size - 1; j > i; j--) {
if (numbers[j] < numbers[j - 1]) // 交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j - 1];
numbers[j - 1] = temp;
}
System.out.println("第" + i + "---" + j + "次排序后:===============");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
System.out.println("第" + i + "次排序后:-----------------");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
}
/**
* 此排序是降序排序,而且是先把最小的先放在最后。所以j最小为0,最大不超过为size-i - 1。
*
* @param numbers
*/
public static void bubbleSortByDESC_MinFirst(int[] numbers) {
int temp = 0;
int size = numbers.length;
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - 1 - i; j++) {
if (numbers[j] < numbers[j + 1]) // 交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j + 1];
numbers[j + 1] = temp;
}
System.out.println("第" + i + "---" + j + "次排序后:===============");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
System.out.println("第" + i + "次排序后:-----------------");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
}
/**
* 此排序是升序排序,而且是先把最大的先放在最前。所以j最小为不大于i,最大为size - 1。
*
* @param numbers
*/
public static void bubbleSortByDESC_MaxFirst(int[] numbers) {
int temp = 0;
int size = numbers.length;
for (int i = 0; i < size - 1; i++) {
for (int j = size - 1; j > i; j--) {
if (numbers[j] > numbers[j - 1]) // 交换两数位置
{
temp = numbers[j];
numbers[j] = numbers[j - 1];
numbers[j - 1] = temp;
}
System.out.println("第" + i + "---" + j + "次排序后:===============");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
System.out.println("第" + i + "次排序后:-----------------");
for (int i1 : intArr) {
System.out.print(i1 + "、");
}
System.out.println();
}
}
}
/*******************************************************************************
* <B>Revision History</B><BR>
* [type 'revision' and press Alt + / to insert revision block]<BR>
*
*
*
* Copyright 2017 AcconSys All rights reserved.
******************************************************************************/