这个升序的冒泡排序主要由创建随机数组(generate)和冒泡排序(BubbleSort)两个函数组成。
一.随机生成排序数组
public static int [] generate(int index){
int[] arr=new int[index];
for(int i=0;i<index;i++)
{
arr[i]=(int)(Math.random()*100);
}
return arr;
}
二.实现冒泡排序的main函数
里面有个Arrays.toString(arr)是博主刚刚学的,可以让数组输出时少写个for循环。
ps:Array里面还有个copyOf用于数组的复制也很好。
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.print("请规定你的数组大小");
int index=scan.nextInt();
int arr[]=generate(index);
System.out.println("原数组"+Arrays.toString(arr));
int Temp;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
Temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=Temp;
}
}
}
System.out.println("排序后的数组"+Arrays.toString(arr));
}
三.完整代码
scanner是用来提取你输入的数组大小
import java.util.Arrays;
import java.util.Scanner;
public class BubbleSort {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.print("请规定你的数组大小");
int index=scan.nextInt();
int arr[]=generate(index);
System.out.println("原数组"+Arrays.toString(arr));
int Temp;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
Temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=Temp;
}
}
}
System.out.println("排序后的数组"+Arrays.toString(arr));
scan.close();
}
public static int [] generate(int index){
int[] arr=new int[index];
for(int i=0;i<index;i++)
{
arr[i]=(int)(Math.random()*100);
}
return arr;
}
}
下面实例分析,博主复制来的,我自己都懒得看。。。有耐心的可以配合main里面的两个for循环看一下对理解有帮助
初始序列为100,50,84,57,61,10,86,升序排(小的在前,大的在后);
第一轮第一次,100与50对比,交换位置,结果:50,100,84,57,61,10,86
第一轮第二次,100与84对比,交换位置,结果:50,84,100,57,61,10,86
第一轮第三次,100与57对比,交换位置,结果:50,84,57,100,61,10,86
第一轮第四次,100与61对比,交换位置,结果:50,84,57,61,100,10,86
第一轮第五次,100与10对比,交换位置,结果:50,84,57,61,10,100,86
第一轮第六次,100与86对比,交换位置,结果:50,84,57,61,10,86,100
将100冒出来了,现在序列为:50,84,57,61,10,86,100
第二轮第一次,50与84对比,位置不换
第二轮第二次,84与57对比,交换位置,结果:50,57,84,61,10,86,100
第二轮第三次,84与61对比,交换位置,结果:50,57,61,84,10,86,100
第二轮第四次,84与10对比,交换位置,结果:50,57,61,10,84,86,100
第二轮第五次,84与86对比,位置不换
将86冒出来了,现在序列为:50,57,61,10,84,86,100
第三轮第一次,50与57对比,位置不换
第三轮第二次,57与61对比,位置不换
第三轮第三次,61与10对比,交换位置,结果:50,57,10,61,84,86,100
第三轮第四次,61与84对比,位置不换
将84冒出来了,现在序列为:50,57,10,61,84,86,100
第四轮第一次,50与57对比,位置不换
第四轮第二次,57与10对比,交换位置,结果:50,10,57,61,84,86,100
第四轮第三次,57与61对比,位置不换
将61冒出来了,现在序列为:50,10,57,61,84,86,100
第五轮第一次,50与10对比,交换位置,结果:10,50,57,61,84,86,100
第五轮第二次,50与57对比,位置不换
将57冒出来了,现在序列为:10,50,57,61,84,86,100
第六轮第一次,10与50对比,位置不换
将50冒出来了,现在的序列为:10,50,57,61,84,86,100
通过上面的分析总结出如下几点,找出规律,通过程序即可完成冒泡算法的实现。
互勉