冒泡排序
-
可以说是最简单的一种排序了,其排序的流程是
- 对比数组中的各个数据,依次比较相邻的两个元素的大小
- 如果前面的数据大于后面的数据,就交换这两个数据,如下
- 这只是一次排序过程的结果,目前数组内的数据还不是有序的,但是已经把最大值给确定了,所以还需要多次排序,所以可以看出冒泡排序并不是高效的排序算法
-
排序算法的java实现
private static void mp(int[] arrs) { int tmp ; for (int i = 1; i < arrs.length; i++) { for (int j = 0; j < arrs.length - i; j++) { if (arrs[j] > arrs[j+1]){ tmp = arrs[j]; arrs[j] = arrs[j+1]; arrs[j+1] = tmp; } } System.out.println(Arrays.toString(arrs)); } }
-
输出的排序过程为
[12, 37, -2, 3, 999] [12, -2, 3, 37, 999] [-2, 3, 12, 37, 999] [-2, 3, 12, 37, 999]
选择排序
-
这也是比较简单的一种排序算法,主要的流程是
- 遍历数组取数组内最小的数据与数组的0下标进行交换,这样就确定了最小值
- 然后从下标1之后的数据中找出最小值与下标为1的数据进行交换,就确定了第二小的数据,依次就完成了排序过程
-
排序算法的java实现
public static void xz(int[] arrs){ int index ,temp = 0; for (int i = 0; i < arrs.length; i++) { index = i; for (int j = i; j < arrs.length; j++) { if (arrs[j] < arrs[index]){ index = j;//寻找最小数下标 } } //判断最小数是否是自己 if (index != i){ temp = arrs[index]; arrs[index] = arrs[i]; arrs[i] = temp; } } System.out.println(Arrays.toString(arrs)); }
-
输出的排序过程为
[-2, 12, 37, 999, 3] [-2, 3, 37, 999, 12] [-2, 3, 12, 999, 37] [-2, 3, 12, 37, 999] [-2, 3, 12, 37, 999]
-