原理
数组排序: 升序
1.选择排序: 每一轮都选择一个最大的, 放在最后面
2.冒泡排序: 每一轮比较相邻两个元素, 小的放前面, 大的放后面
3.插入排序: 将数组分成两部分, 一部分是已经排好的, 另一部分挨个访问, 插入到前一部分合适的地方
代码实现
import java.util.Arrays;
public class Demorange {
public static void main(String[] args) {
int a[] = new int[]{4, 0, 3, 2, 1};
// a = SelectSort(a); //选择排序
// a = maopaoSort(a); //冒泡排序
a = insertSort(a); //插入排序
System.out.println(Arrays.toString(a));
}
public static int[] SelectSort(int[] a) {
int k = 0, t = 0;
for (int i = 0; i < a.length - 1; i++) {
k = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[k]) {
k = j;
}
}
t = a[k];
a[k] = a[i];
a[i] = t;
}
return a;
}
public static int[] maopaoSort(int[] a) {
int t = 0;
for (int i = 0; i < a.length - 1; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
return a;
}
public static int[] insertSort(int[] a){
int t = 0, i, j;
for(i = 1; i < a.length; i++){
t = a[i];//每次循环将下一个数插入前面已经排序好的数列中
for(j = i - 1; j >= 0; j--){
if(t < a[j]){
a[j + 1] = a[j];//如果a[j]比t大就右移一个位置
}
else{
a[j + 1] = t;//如果t比a[j]大就把t放到a[j]后面
break;//t插入完毕,直接到下一个数,因为前面的都比a[j]要小
}
}
//如果j = -1说明 t比a[0]还小
if(j == -1){
a[0] = t;//把a[i]赋值给a[0]
}
}
return a;
}
}