机试中算法时间复杂度不能超过百万级别,即不能超过一千万。假设算法的时间复杂度为O(n^2),则n的取值不应大于3000,否则将会达到千万数量级复杂度,超出用时限制。例如不能在1s内对10000个整数进行冒泡排序,否则时间复杂度将会达到O(n^2)即100000000,而应该采用快速排序(O(nlog n)40000。空间复杂度则考虑为n*数组长度。
冒泡排序:
输入:n = 4
4 3 2 1
4 3 2 1
调试结果:
i = 0//要排N次
j = 0; //大于j+1,交换3,4,2,1
j = 1;//小于j+1, 3 2 4 1
j = 2; //大于j+1;交换3,2,1 4
j = 3,
i = 1;
j = 0;//2 3 1 4
j = 1;//2 1 3 4
j = 2;
i = 2;
j = 0;1 2 3 4
i = 0//要排N次
j = 0; //大于j+1,交换3,4,2,1
j = 1;//小于j+1, 3 2 4 1
j = 2; //大于j+1;交换3,2,1 4
j = 3,
i = 1;
j = 0;//2 3 1 4
j = 1;//2 1 3 4
j = 2;
i = 2;
j = 0;1 2 3 4
j = 1;
i = 3;
j = 0;
i = 3;
j = 0;
快速排序考虑sort库函数,用于C++中,对给定区间所有元素进行排序,头文件#include<algorithm>,包含三个参数&#x