下面展示一些 内联代码片
。
算法笔记----冒泡算法
// An highlighted block
package com.example.math.wjy;
public class Code02 {
/**
* 生成随机数组
*/
public static int[] gennerateArray(int len, int max) {
int[] arr = new int[len];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int) (Math.random() * max);
}
return arr;
}
/**
* 冒泡排序
* 从第一个数字开始 和相邻数字做比较,把大放到右边,→ 最大放的到最右边,不处理;
* 然后在遍历一遍,直到结束
*/
public static void process1(int[] arr) {
if (null == arr || arr.length < 2) {
return;
}
for (int i = arr.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
public static void process2(int[] arr) {
if (null == arr || arr.length < 2) {
return;
}
for (int e = arr.length - 1; e > 0; e--) { //0 - e
for (int i = 0; i < e; i++) {
if (arr[i] > arr[i + 1]) {
swap(arr, i, i + 1);
}
}
}
}
/**
* 异或
* 1,不进位相加
* 2,相同为0,不同为1
* 3,多个数字异或顺序不同,不影响结果
*/
public static void swap(int[] arr, int i, int j) {
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
public static void main(String[] args) {
int[] arr = gennerateArray(100000, 1000000);
long start = System.currentTimeMillis();
process1(arr);
// process2(arr);
long end = System.currentTimeMillis();
System.out.println(end - start);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + ",");
}
}
}