Algorithm-Sort-Merge-MergeSort01-Java-归并排序

MergeSort

	public static void mergeSort(int[] array, int low, int high) {
		int mid = (low + high)/2;
		if(low < high) {
			// 左边
			mergeSort(array, low, mid);
	        // 右边
			mergeSort(array, mid + 1, high);
	        // 左右归并
	        merge(array, low, mid, high);
		}
	}
	public static void merge(int[] array, int low, int mid, int high) {
	    int[] tmp = new int[high - low + 1];
	    int left = low;// 左指针
	    int right = mid + 1;// 右指针
	    int t = 0;
	    while (left <= mid && right <= high) {
	        if (array[left] < array[right]) {
	            tmp[t] = array[left];
	            t++;
	            left++;
	        } else {
	        	tmp[t] = array[right];
	        	t++;
	        	right++;
	        }
	    }
	    while (left <= mid) {             
	        tmp[t++] = array[left++];
	    }
	    while (right <= high) {
	        tmp[t++] = array[right++];
	    }
	    for (int z = 0; z < tmp.length; z++) {
	        array[z + low] = tmp[z];
	    }  
	}

Algorithm-Sort-Merge-MergeSort01-Java-归并排序

待改进1:排序分析、时间复杂度和空间复杂度分析
待改进2:排序GIF图

小白发文,有错及不足请指出,嘻嘻????~~~,Learning on the way~~~