一、冒泡排序
** 本类用于完成冒泡排序*/
public class TestBubbleSort {
public static void main(String[] args) {
//1.创建一个无序的数组
int[] a = {3, 5, 2, 1, 4};
//2.调用method()完成排序
int[] newA = bubbleSort(a);
System.out.println("排序完成:" + Arrays.toString(newA));
}
//方式一
public static int[] method(int[] a) {
/*
* 1.外层循环,控制比较的轮数,假设有n个数,最多比较n-1次
* 开始值:1 结束值:<= a.length-1 变化:++
* 控制的是循环执行的次数,比如5个数,最多比较4轮,<= a.length-1,最多取到4,也就是
[1,4]4次
*/
for (int i = 1; i <= a.length - 1; i++) {
System.out.println("第" + i + "轮:");
//2.内层循环:相邻比较+互换位置
for (int j = 0; j < a.length - i; j++) {
//相邻比较,a[j]代表的就是前一个元素,a[j+1]代表的就是后一个元素
if (a[j] > a[j + 1]) {
//交换数据
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
System.out.println("第" + i + "轮的结果:" + Arrays.toString(a));
}
return a;
}
//方式二
public static int[] bubbleSort(int[] a) {
for (int i = 1; i <= a.length - 1; i++) {
boolean flag = false;
System.out.println("第" + i + "轮:");
for (int j = 0; j < a.length - i; j++) {
if (a[j] > a[j + 1]) {
int t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
flag = true;
}
}
if (flag == false) {
return a;
}
System.out.println("第" + i + "轮的结果:" + Arrays.toString(a));
}
return a;
}
}
二、插入排序
/*本类用于测试插入排序*/
public class insertionSort {
public static void main(String[] args) {
int[] a = {4,6,2,3,5};
System.out.println("排序完成:"+ Arrays.toString(method(a)));
}
public static int[] method(int[] a){
for (int i = 1; i < a.length; i++) {
int t = a[i];
int j = i - 1;
for (; j >= 0 ; j--) {
if(a[j] > t){
a[j+1] = a[j];
}else{
break;
}
}
a[j+1] = t;
}
return a;
}
}
三、选择排序
四、快速排序