冒泡排序
冒泡排序是一种简单的排序算法
实际上是每一次排序都会将最大的元素放到最后
比较相邻的元素,如果第一个比第二个大,就交换他们两个
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数
针对所有的元素重复以上的步骤
点击查看代码
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
boolean flag = true;
for (int j = 0; j < len - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = false;
}
}
if (flag) {
break;
}
}
** 选择排序**
首先在末排序序列中找到最小元素,存放到排序序列的起始位置
再从剩余没有排序的元素再找到最小的元素,然后放到已排序序列的末尾
然后重复剩余元素
点击查看代码
int len = arr.length;
for (int i = 0; i < len - 1; i++) {
int minVal = i;
for (int j = i + 1; j < len; j++) {
if (arr[minVal] > arr[j]) {
minVal = j;
}
}
if (minVal != i) {
int tmp = arr[i];
arr[i] = arr[minVal];
arr[minVal] = tmp;
}
}
插入排序
首先从第一个元素开始,该元素被认为是有序的
取出第一个元素,在已经排序的元素序列中从后往前进行扫描
如果该已经排好序的元素大于新元素,则将该元素移到下一位置
重复步骤,一直到找到已排序的元素小于或者等于新元素的位置
点击查看代码
for (int i = 1; i < arr.length; i++) {
int val = arr[i];
int j = i;
while (j > 0 && val < arr[j - 1]) {
arr[j] = arr[j - 1];
j--;
}
arr[j] = val;
}