1 插值排序,后1位比前1位,或前位比后位。
public static void sort(int [] arr){
//定边界
if(arr.length<2|| arr==null){
return;
}
//定范围
/*
* 0~1
* 0~2
* ...
* 0~n-1
* */
for (int i = 1; i <= arr.length-1; i++) {
int newIndex=i;
//定交换条件
while ((newIndex-1)>=0 && arr[newIndex]<arr[newIndex-1]){
int temp=arr[newIndex];
arr[newIndex]=arr[newIndex-1];
arr[newIndex-1]=temp;
//回退,继续看是否需要比较
newIndex--;
}
}
}
2 冒泡排序,两两交换,逐渐传递。
private static void sort3(int[] arr) {
//定边界
if(arr.length<2|| arr==null){
return;
}
//定索引范围
/*
* 0~n-1
* 0~n-2
* ...
* 0~1
* */
int len=arr.length;
for (int i = len-1; i >=0 ; i--) {
//在0~i 范围内两两比较交换
for (int j = 0; j <i ; j++) {
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
3 选择排序,从左到右,选择最小值排序
private static void sort4(int[] arr) {
//定边界
if (arr.length < 2 || arr == null) {
return;
}
//定索引范围
/*
* 0~n-1
* 1~n-1
* ...
* n-2~n-1
* */
for (int i = 0; i <arr.length ; i++) {
int minIndex=i;//假设最小值的索引号是i
//将i位置的数与后面的数进行比较交换
for (int j = minIndex+1; j <arr.length ; j++) {
if (arr[minIndex]>arr[j]){
int temp = arr[j];
arr[j] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
}