// 3.若左边的元素大于右边的元素则交换两个元素的位置
if (brr[j] > brr[j + 1]) {
int temp = brr[j];
brr[j] = brr[j + 1];
brr[j + 1] = temp;
flag = false;
// 不使用第三者变量实现两个元素的交换
int a = 2;
int b = 3;
a = a + b; // a=5
b = a - b; // b=2
a = a - b; // a=3
// 使用抑或运算符
a = a ^ b;
b = a ^ b;
a = a ^ b;
}
}
// 根据 flag 判断整个循环时候发生交换
if (flag) {
System.out.println(brr);
}
}
}
// 插入排序算法
public static void insertSort(int[] irr) {
int j;
for (int i = 1; i < irr.length; i++) {
int temp = irr[i];
for (j = i - 1; j >= 0 && irr[j] > temp; j–) {
irr[j + 1] = irr[j];
}
irr[j + 1] = temp;
}
}
// 选择排序算法
public static void selectSort(int[] srr) {
int min = 0;
for (int i = 0; i < srr.length - 1; i++) {
min = i;
for (int j = i + 1; j < srr.length; j++) {
if (srr[min] > srr[j]) {
min = j;
}
}
if (min != i) {
int temp = srr[i];
srr[i] = srr[min];
srr[min] = temp;
}
}
}
// 快速排序算法
public static void fastSort(int[] frr, int left, int right) {
int p = (left + right) / 2;
int pivot = frr[p];
// 2.分别使用左右两边的元素依次与基准值比较大小,将所有比基准值小的元素放在左边,将所有比基准值大的或者相等的元素放在右边
int i = left;
int j = right;
for (; i < j;) {
// 先使用左边的元素与基准值比较,若左边的元素小于基准值并且确实在左边,则使用下一个左边的元素继续与基准值大或者相等的元素放在右边
while (frr[i] < pivot && i < p) {
i++;
}
// 直到左边有元素并且左边元素不在小于基准值,此时将左边元素移动到 p 指向的位置,p 指向该元素原来的位置
if (i < p) {
frr[p] = frr[i];
p = i;
}
// 再使用右边的元素与基准值比较,若右边的元素大于基准值并且确实在右边,则使用下一个右边的元素继续与基准值大或者相等的元素放在左边
while (frr[j] >= pivot && j > p) {
j–;
}
// 直到右边有元素并且右边元素不在大于基准值,此时将右边元素移动到 p 指向的位置,p 指向该元素原来的位置
if (j > p) {
frr[p] = frr[j];
p = j;
}
}
// 当左边元素的下标等于右边元素的下标时,把取出来的中间值重新赋值回去
frr[p] = pivot;
if ((p - left) > 1) {
fastSort(frr, left, p - 1);
}
if ((right - p) > 1) {
fastSort(frr, p + 1, right);
}
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!