冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。----来自百度百科简单de说:
升序 排列:相邻元素两两比较 大 的往后放,小 的往前放,最终 最大值 出现在 索引 最 大 处。
降序 排列:相邻元素两两比较 小 的往后放,大 的往前放,最终 最小值 出现在 索引 最 大 处。
懵逼了吗?来个图解(升序)😭😭😭
看图上代码😅😅😅
1.键盘录入选择排序方式
2.排序
3.输出为数学中的数组格式(字符串)
import java.util.Scanner;
class BubbleSort{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int[] arr = {1, 2, 4, 9, 7, 10, 88, 0, -1, 666};
// 输入升序/降序
System.out.println("对数组[1, 2, 4, 9, 7, 10, 88, 0, -1, 666]进行排序。");
while(true){
System.out.print("请输入排序方式(0:升序,1:降序):");
int method = sc.nextInt();
System.out.println("\n ┌------------------------------------------------┐\n");
if(method == 0 || method == 1){
// 调用排序方法
int[] result = bubbleSort(arr, method);
System.out.print(" ├ " + (method == 0 ? "升序" : "降序") + "排列:");
// 调用输出方法
String res = printArr(result);
System.out.print(res + " ┤");
}else {
System.out.print(" ├ 请输入正确的指令! ┤");
}
System.out.println("\n\n └------------------------------------------------┘\n");
}
}
// 数组冒泡排序
public static int[] bubbleSort(int[] arr, int method){ // method:排序方式--0:升序,1:降序
if(method == 0){ // 升序排列
for(int i = 0, len = arr.length; i < len; i++){
for(int j = 0, sortLen = len - i - 1; j < sortLen; j++){
if(arr[j] > arr[j + 1]){
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
}else if(method == 1){ // 降序排列
for(int i = 0, len = arr.length; i < len; i++){
for(int j = 0, sortLen = len - i - 1; j < sortLen; j++){
if(arr[j] < arr[j + 1]){
arr[j] = arr[j] ^ arr[j + 1];
arr[j + 1] = arr[j] ^ arr[j + 1];
arr[j] = arr[j] ^ arr[j + 1];
}
}
}
}
return arr;
}
// 输出数组
public static String printArr(int[] arr){
String arrString = "[";
for(int i = 0, len = arr.length; i < len; i++){
if(i < len - 1){
arrString += (arr[i] + ", ");
}else{
arrString += (arr[i] + "]");
}
}
return arrString;
}
}
如果你看到了这里,请小伙伴给个一键三连,你的肯定是对我最大的鼓励-