bubbleSort和insertSort学习


/**
	 * 冒泡排序和插入排序,总体思路都是移动算法,外层循环没大差别,内层循环,插入排序是从当前临时比对元素开始,往前面进行排序
	 * 冒泡排序是从数组最后一个元素开始到当前临时元素之间进行移动,感觉上插入排序效率应该更一点,插入一个有序一个。
	 *
	 * 数组的核心是移动过程,冒泡排序,遍历每个元素,从每个元素下标到最后的元素下标,依次比较大小,移动,最后越来越有顺序了
	 * @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;
		}
	}


posted @ 2021-12-15 16:09  堕落先锋  阅读(20)  评论(0编辑  收藏  举报