import java.util.Random;
/**
* 冒泡排序算法
* 步骤:
* 1.对数组中的相邻的两个数据进行比较。
* 2.如果前面的数据大于后面的数据就交换这两个数据,这样一轮比对下来就可以选出一个最小的了。
* 3.重复前面的步骤,就可以选出剩下的最小的了
*
* 核心原理:内层循环的时候,每次循环就要找出一个最大的或者最小的排好,然后再在剩下的数据中重复之前的操作
*/
public class Algorithm_BubbleSort {
public static void main(String[] args) {
int[] arr=new int[10];
Random random=new Random();
for (int i = 0; i < 10; i++) {
int num = random.nextInt(100)+1;
arr[i]=num;
}
System.out.print("原始数据:");
for (int i : arr) {
System.out.print(i+", ");
}
BubbleSortUp1(arr);
System.out.println();
System.out.print("方法1升序处理之后的数据:");
for (int i : arr) {
System.out.print(i+", ");
}
BubbleSortLow(arr);
System.out.println();
System.out.print("方法1降序处理之后的数据:");
for (int i : arr) {
System.out.print(i+", ");
}
BubbleSortUp2(arr);
System.out.println();
System.out.print("方法2升序处理之后的数据:");
for (int i : arr) {
System.out.print(i+", ");
}
BubbleSortLow2(arr);
System.out.println();
System.out.print("方法2升序处理之后的数据:");
for (int i : arr) {
System.out.print(i+", ");
}
}
public static void BubbleSortUp1(int[] arr){
int temp;
for (int i = 0; i <arr.length ; i++) {
for (int j = arr.length-1; i<j; j--) {
if (arr[j-1]>arr[j]){
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
}
public static void BubbleSortLow(int[] arr){
int temp;
for (int i = 0; i <arr.length ; i++) {
for (int j = arr.length-1; i <j ; j--) {
if (arr[j-1]<arr[j]){
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}
}
private static void BubbleSortUp2(int[] arr) {
int temp;
for (int i = arr.length; i >=0 ; i--) {
for (int j = 0; j <i-1 ; j++) {
if (arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
private static void BubbleSortLow2(int[] arr) {
int temp;
for (int i = arr.length; i>=0 ; i--) {
for (int j = 0; j <i-1 ; j++) {
if (arr[j]<arr[j+1]){
temp=arr[j+1];
arr[j+1]=arr[j];
arr[j]=temp;
}
}
}
}
}
网友评论