如有错误,敬请指正。
1.冒泡排序
冒泡排序的规则:将数组中相邻的两个元素进行比较操作,如果前一个元素大于后一个元素,则交换两个元素的位置,遵守这个逻辑依次执行,直到所有数据都进行这个操作,此时就会有一个数据被放置在正确位置上。再重复执行此操作直到排序完成。
import java.util.Arrays;
public class BubbleSort{
public static void main(String[] args){
int[] bubble = new int[6];
//数组赋值
for(int i = 0; i < bubble.length; i++){
bubble[i] = (int) (Math.random() * 20) + 1;
}
int[] bubble1 = Arrays.copyOf(bubble,bubble.length); //利用Arrays工具类的copyOf、sort()方法判断排序是否成功
System.out.println("bubble排序前" + Arrays.toString(bubble)); //打印最初数组
System.out.println("-------------------------------------------");
//冒泡排序
优化:bubble-1-j,经过一次或多次排序后,数组末尾已经为有序,不用再进行比较
for(int j = 0; j < bubble.length- 1; j++){
boolean flag = true;
for(int i = 0; i < bubble.length - 1 - j; i++){
if(bubble[i] > bubble[i + 1]){
int t = bubble[i];
bubble[i] = bubble[i + 1];
bubble[i + 1] = t;
flag = false;
}
}
System.out.println(Arrays.toString(bubble));
if(flag == true){
break;
}
}
System.out.println("-------------------------------------------");
System.out.println("bubble1排序前" + Arrays.toString(bubble1));
System.out.println("-------------------------------------------");
System.out.println("bubble排序后" + Arrays.toString(bubble));
Arrays.sort(bubble1);
System.out.println("bubble1排序后" + Arrays.toString(bubble1));
System.out.println(Arrays.equals(bubble,bubble1));
}
}
2.选择排序
选择排序原则:选择排序时固定一个位置值,依次和后面每一个元素进行比较,如果固定位置值大于比较的数据值,交换两个元素的位置,依次执行上述这个逻辑,选择排序执行一轮之后就会有一个数字放置到正确位置上。选择下一个位置进行固定,再重复执行此操作直到排序完成。
import java.util.Arrays;
public class SelectionSort{
public static void main(String[] argjs){
int[] selection = new int[6];
for(int i = 0; i < selection.length; i++){
selection[i] = (int) (Math.random() * 20) + 1;
}
int[] selection1 = Arrays.copyOf(selection, selection.length);
System.out.println("selection排序前" + Arrays.toString(selection));
System.out.println("selection1排序前" + Arrays.toString(selection1));
System.out.println("-------------------------------------------");
//选择排序
//内层循环从固定位置的下一位开始
for(int j = 0; j < selection.length - 1; j++){
for(int i = j + 1; i < selection.length; i++){
if(selection[j] > selection[i]){
int t = selection[i];
selection[i] = selection[j];
selection[j] = t;
}
}
System.out.println(Arrays.toString(selection));
}
System.out.println("-------------------------------------------");
System.out.println("selection排序后" + Arrays.toString(selection));
Arrays.sort(selection1);
System.out.println("selection1排序后" + Arrays.toString(selection1));
System.out.println(Arrays.equals(selection, selection1));
}
}