我们这里先介绍几种适用的比较少的数据时候,算法复杂度都是O(n2),介绍三种算法:
①冒泡排序算法
②选择排序算法
③插入排序算法
这篇介绍第一种:冒泡排序算法
冒泡排序算法通过多次比较和交换来实现排序,其排序流程如下:
1)对数组中的各数据,依次比较相邻两个元素的大小
2)如果前面的数据大于后面的数据,则交换这两个数据,经过一轮排序后,便把最大的数据排好了
3)再用相同的方法把剩下的数据逐个进行比较,最后便可按从小到大的顺序排好
代码:
public static void bubbleSort(int a[]) {
for (int i = 1; i < a.length; i++) {
for (int j = 0; j < a.length-i; j++) {
//交换
if (a[j] > a[j+1]) {
int temp;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
//这是输出每一步排序的结果
System.out.printf("第" + i + "次排序结果:");
for (int i2 = 0; i2 < a.length; i2++) {
System.out.printf(a[i2] + " ");
}
System.out.println();
}
}
输出结果:
这里有张排序算法的比较表: