/**
* 冒泡排序和插入排序,总体思路都是移动算法,外层循环没大差别,内层循环,插入排序是从当前临时比对元素开始,往前面进行排序
* 冒泡排序是从数组最后一个元素开始到当前临时元素之间进行移动,感觉上插入排序效率应该更一点,插入一个有序一个。
*
* 数组的核心是移动过程,冒泡排序,遍历每个元素,从每个元素下标到最后的元素下标,依次比较大小,移动,最后越来越有顺序了
* @param arr
*/
public static void sortBubble(long[] arr) {
long tmp = 0;
for(int i = 0; i < arr.length - 1; i++) {
for(int j = arr.length - 1; j > i; j--) {
if(arr[j] < arr[j - 1]) {
//进行交换
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}
/**
* 数组核心是移动策略,从当前位置开始往后移动,找出来合适的插入位置就是插入排序的精华
* @param arr
*/
public static void sortInsert(long[] arr){
long tmp =0;
for (int i = 1; i < arr.length; i++) {
tmp = arr[i];
int j = i;
while (j > 0 && tmp > arr[j]){
arr[j] = arr[j-1];
j--;
}
arr[j] = tmp;
}
}