1 选择排序
从第二个数开始遍历,找到最小的数,如果比第一个数小的话和第一个数进行交换。
从第三个数开始遍历,找到最小的数,如果比第二个数小的话和第二个数进行交换。
…
最终得到升序的排列。
2 插入排序
假设x下标处的数据之前都为有序序列,将x处得数据插入到0~x-1之间的适当位置。
实现程序如下:
private static void method(int[] arr) {
if (arr == null) {
return;
}
int j = 0;
int tmp = 0;
for (int i = 1; i < arr.length; i++) {
tmp = arr[i];
j = i;
while (arr[j - 1] > tmp && j > 0) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = tmp;
}
}
3 冒泡排序
下图是一轮冒泡排序得过程和结果,得到了这样就得到了最大得一个元素65。然后除了最后一个元素,继续进行冒泡…
代码如下:
private static void method(int[] arr) {
int len = arr.length;
int tmp = 0;
for (int i = len - 1; i >= 0; i--) {
for (int j = 0; j < i; j++) {
// 进行冒泡,如果你右边的数比你小,就交换
if (arr[j] > arr[j + 1]) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
4 归并排序
“归”是递归的意思,即将数组折半。
“并”是将分开的数据按照从小到大或者从大到小的顺序再放到一个数组中。
思路:
假设我们有一个方法method,能够将数组排序好
那么对于一个数组。我们把数组分成两部分,arr1和arr2,分别用method方法作用。
这样这两部分都是有序的
然后将作用后的两个数组,进行合并。
(合并方法是将两端头较小的捡出来,放到最终数组的开头,依次进行......)
下面是代码实现,调用method静态方法,传递数组即可进行排序。