奥礼网
新记
快速排序如果第一次就把最小的放在第一位,程序会有什么问题?
比如数组为49,38, 65, 97, 76, 13, 27,12,11
举报该文章
相关建议 推荐于2018-07-30
partition函数相当于没有执行,在quicksort函数里面,由于每次递归是quicksort(A,left,pos-1);quicksort(A,pos+1,right);此时原本的如果是对左边序列递归的话,此时left为原来left+1,即此时的A[left]为12。程序不会有什么问题,但效率会比较低。
温馨提示:内容为网友见解,仅供参考
当前网址:
https://aolonic.com/aa/k41ag1knd.html
其他看法
第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
不会有问题啊
相似回答
大家正在搜
相关问题
如果已是有序或基本有序,为何用快速排序会慢很多?
快速排序算法原理与实现
快速排序第一趟结果是什么
(Q, H, C, Y, P, A, M, S, R, D,...
冒泡排序和快速排序有什么区别
n个元素进行快速排序过程中,第一次划分最多需要移动多少次元素
快速排序的时间复杂度
快速排序的问题