归并排序和快速排序计时计算——谁更快?

时间:2024-11-18 07:33:30

今天复习了归并和快排,突然想计算一下他们的速度差别到底有多大~结果还是挺令人意外的,哈哈。

话不多说,看代码。

	let arr = [];
	for (let i = 0; i < 500000; i++) {
	    (((() * 1000)));
	}
	let start = new Date().getTime();
	
	/**
	 * 快速排序
	 */
	function quickSort(arr) {
	
	    if ( <= 1) {
	        return arr;
	    }
	
	    let mid =  >> 1;
	    let midValue = (mid, 1);
	    let left = [];
	    let right = [];
	
	    for (let i = 0; i < ; i++) {
	        if (arr[i] < midValue) {
	            (arr[i]);
	        } else {
	            (arr[i]);
	        }
	    }
	
	    return quickSort(left).concat(midValue, quickSort(right));
	}
	
	/**
	 * 归并排序
	 */
	function mergeSort(arr) {
	    function part(arr, left, right) {
	        if (left == right) {
	            return;
	        }
	        let mid = left + ((right - left) >> 1);
	
	        part(arr, left, mid);
	        part(arr, mid + 1, right);
	
	        let p1 = left;
	        let p2 = mid + 1;
	        let cache = [];
	        let i = 0;
	        while (p1 <= mid && p2 <= right) {
	            cache[i++] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];
	        }
	
	        while (p1 <= mid) {
	            cache[i++] = arr[p1++];
	        }
	
	        while (p2 <= right) {
	            cache[i++] = arr[p2++];
	        }
	
	        for (let i = 0; i < ; i++) {
	            arr[left + i] = cache[i];
	        }
	
	        return arr;
	    }
	
	    return part(arr, 0,  - 1);
	}
	
	
	/**
	 * 验证
	 */
	(`结果:[${quickSort(arr)}]`);
	let end = new Date().getTime();
	(`用时:${end - start}毫秒`);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77

结果

  • 在数组仅有100项的时候
    快排:
    在这里插入图片描述
    归并:
    在这里插入图片描述
    不相上下啊哈哈啊,那么我们直接上二十万项的数组~

  • 数组200000项:
    快排:
    在这里插入图片描述
    九秒多!
    来看看可爱的归并
    在这里插入图片描述
    两秒!
    差距这么大的吗?


惊不惊喜,意不意外!
话说回来或许是这次我使用的快排太浪费空间,下次换个好用的试试~

From Raool