Java实现冒泡排序
冒泡排序即把一组数列用冒泡的方式把数列排好序,即以两两相邻的方式比较然后不符合排序方式的两个数交换,直到把最大或最小的数移到最后或最前,以此类推得出第二大或第二小的也排列好然后第三大第四大…
冒泡排序有多种方法实现,我用了两种方法,一种是递归一种用for循环直接写。
方法一:递归实现冒泡排序:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入一个整数:");
Scanner sac = new Scanner(System.in);
int integer = sac.nextInt();
System.out.println("请输入" + integer + "个数:");
Scanner sc = new Scanner(System.in);
int arr[] = new int[integer];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
BubbleSort(arr, 0, arr.length);// 调用冒泡函数
// 输出排序好的数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static int[] BubbleSort(int[] arr, int low, int high) {
int min = 0;
if (low < high) {// 当数组没有比较完时执行以下操作
/*
* 相邻两数比较,后面的比前面的小就交换,一直到最后执行完一次把最大的放到了最后面
* ,比较两次后面就有两个最大的数,以此类推,所以for的循环条件是执行到已经排好序的前面的数
*/
for (int i = 0; i < high - low - 1; i++) {
if (arr[i] > arr[i + 1]) {
min = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = min;
}
}
return BubbleSort(arr, low + 1, high);// low+1表示循环次数加一,后面的排好序的数就加一个,下一层循环就少循环一次
}
return arr;
}
方法二(直接用for循环的方式):
public static void main(String[] args) {
System.out.println("请输入一个整数:");
Scanner sac = new Scanner(System.in);
int integer = sac.nextInt();
System.out.println("请输入" + integer + "个数:");
Scanner sc = new Scanner(System.in);
int arr[] = new int[integer];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
int temp = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = arr.length - 1; j > 0; j--) {
if (arr[j] < arr[j - 1]) {
temp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = temp;
}
}
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
思路一样所以只在递归那里写了注释。
每天都要加油!!!
****满怀希望就会所向披靡!!!****