二、流程图解
三、代码实现
public class BubbleSort {
public static void main(String[] args) {
int arr[] = {3,9,-1,10,-2};
//临时变量
int temp = 0;
boolean flag = false;//表示是否进行过交换
//第一趟排序
for (int i = 0; i < arr.length - 1 - 0; i++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第二趟排序
for (int i = 0; i < arr.length - 1 - 1; i++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第三趟排序
for (int i = 0; i < arr.length - 1 - 2; i++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//第四趟排序
for (int i = 0; i < arr.length - 1 - 3; i++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
//===========================================================================
//整合上面的为一个for循环
for (int i = 0; i < arr.length-1; i++) {
for (int i1 = 0; i1 < arr.length - i; i1++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
//优化,当一趟下来没有一次交换动作,则就可以提前结束
for (int i = 0; i < arr.length-1; i++) {
for (int i1 = 0; i1 < arr.length - i; i1++) {
//如果前面的数字比后面大,则交换
if (arr[i] > arr[i+1]){
flag = true;
temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
if (!flag){
break;
}else {
flag = false;//当上次交换了,需要重置
}
}
}
}
选择排序 一、选择排序思路分析图 二、选择排序思路图解
三、代码实现
public class SelectSort {
public static void main(String[] args) {
int arr[] = {-90,66,-1,3,4,0,44,22,50};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int arr[]){
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int i1 = i+1; i1 < arr.length; i1++) {
if (arr[i] > arr[i1]){
temp = arr[i];
arr[i] = arr[i1];
arr[i1] = temp;
}
}
}
}
}



