快速排序如果第一次就把最小的放在第一位,程序会有什么问题?

比如数组为49,38, 65, 97, 76, 13, 27,12,11

partition函数相当于没有执行,在quicksort函数里面,由于每次递归是quicksort(A,left,pos-1);quicksort(A,pos+1,right);此时原本的如果是对左边序列递归的话,此时left为原来left+1,即此时的A[left]为12。程序不会有什么问题,但效率会比较低。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-02-21
如果是以序列的第一个元素作为快速排序划分的基准数(pivot),此时算法的执行效率就会下降
最为极致的情况是待排序序列本身就有序,如果还是以序列的第一个元素作为基准的话,算法的性能下降,就从平均的O(nlogn)增长到O(n^2),空间复杂度也从O(logn)增长到O(n)本回答被提问者采纳
第2个回答  2018-07-23
没问题呀,你用数组把这些数存起来,用sort就行了
C++用法:sort(数组名+1(如果从0数组开始存,就不需要加),数组名+末尾数组下标+1);
第3个回答  2012-02-21
不会有问题啊
相似回答