定义一个数组
int[] arr = {1,6,3,4,7,88,43,65,26,54};
排序思路:
1,两两进行对比,大的放后,小的放前,即对比两数字,如果后面比前面大,则交换位置
第一轮代码思路如下:
因为是两两对比,所以10位数,只需要循环8次即可对比完成,
所以对比第一轮,j的范围是j<arr.length-1
for(int j=0;j<arr.length-1;j++){ if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } }
2,第一轮循环完之后,最后一个数就应该是最大的数了,就不用再循环最后一位了,只用循环前面的 ,直到结束,所以再套一层循环,
第一次就是i=0,让j就循环全部,(范围j<arr.length-1-0)
第二次就是i=1,让j-1开始循环
第三次就是i=2,让j-2开始循环
所以j的范围是j<arr.length-1-i
for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;j++){ if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }
自此就完成了冒泡排序,全部代码如下
public static void main(String[] args) { int[] arr = {43,6,3,4,7,88,1,65,26,54}; int temp; for(int i=0;i<arr.length-1;i++){ for(int j=0;j<arr.length-1-i;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)); } }
打印结果如下