importjava.util.Arrays;/*** 是将无序a[0],a[1]...a[n],将其升序排序,比较a[0].a[1]的值,若结果为1,则交换两者的值,否则不变,接着继续向下比较.最后比较a[n-1].a[n]的结果,结束后,a[n]的值为当前数组中最大值.接着继续将a[1]~a[n-1]进行比较.一共处理n-1轮后, 就是以升序排列
*
* 优点: 稳定
* 缺点: 耗时长,每次只是移动两个相邻的数据做对比
* @Description Java冒泡排序
* @Author : Dy yimting@yeah.net
* @Date : 2019/3/26,14:06
* @Project : Java_Sort
* @Version : 1.0
**/
public classBubbleSort {public static voidmain(String[] args) {int[] arr = {34, 2, 146, 76, 45, 3, 6, 7};long start =System.nanoTime();
sort(arr);long end =System.nanoTime();
System.out.println("排序后 : " +Arrays.toString(arr));
System.out.println("运行时间:" + (end - start) + " ns");
}/***@paramarr 传入的数组
* 第一次外层循环 ,和第一层内层循环内部结果
* 34 2 146 76 45 3 6 7
* 2 34 146 76 45 3 6 7
* 2 34 146 76 45 3 6 7
* 2 34 76 146 45 3 6 7
* 2 34 76 45 146 3 6 7
* 2 34 76 45 3 146 6 7
* 2 34 76 45 3 6 146 7
* 2 34 76 45 3 6 7 146
* .....................*/
public static void sort(int[] arr) {//外侧循环控制整个循环的次数
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]) {
arr[j]= arr[j] ^ arr[j + 1];
arr[j+ 1] = arr[j] ^ arr[j + 1];
arr[j]= arr[j] ^ arr[j + 1];
}
}
}
}
}