最近在学习java基础,跟着狂神说的视频在学习,看到了冒泡排序,知道原理后就自己动手写了写程序,最后实现了,没有参考其他的程序,自己写出来的感觉很不错
1 比较数组中两个相邻的元素,如果第一个数比第二个数大,交换位置
2 每一次比较 都会产生出一个最大或者最小的元素
3 下一轮则可以少一次排序;
4 依次排序 直到结束
package com.liu.array; import java.util.Arrays; public class ArrayDemo07 { public static void main(String[] args) { int[] a={19,83,0,93,2,46,100,59}; System.out.println(Arrays.toString(a)); sort(a); System.out.println(Arrays.toString(a)); } //冒泡排序 // 比较数组中两个相邻的元素,如果第一个数比第二个数大,交换位置 // 每一次比较 都会产生出一个最大或者最小的元素 // 下一轮则可以少一次排序; // 依次排序 直到结束 public static int[] sort(int[] a){ for (int k = a.length-1; k>0; k--) {//每一轮操作减少一次排序(去掉了最右边边即最大的一个值的排序) for (int i = 0; i < a.length-1; i++) { int b=0; if (a[i] > a[i+1]) {//比较大小,进行交换,把较大的数往后移动,知道移到最右边 b=a[i+1]; a[i+1] = a[i]; a[i]=b;//两数交换 需要一个中间变量实现 } } } return a; } }
1 关于数组下标溢出:注意i+1不能超出索引范围
2 关于交换:两个数的值进行交换注意利用中间变量
3 关于循环:每次减少一次排序,注意利用循环来实现