大家好,今天小编来为大家解答quickset是什么意思?用法、例句这个问题,QuickSort(快速排序)很多人还不知道,现在让我们一起来看看吧!
1、快速排序是由东尼·霍尔所发明的一种排序算法。
2、快速排序是使用分治的思想,把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。
3、如果要排序数组中下标从p到r之间的任意一个数据作为pivot(分区点)。
4、遍历p到r之间的数据,将小于pivot的放到左边,将大于pivot的放到右边,pivot放到中间。
5、经过这一步骤之后,数组p到r之间的数据就被分成了三个部分,前面p到q-1之间都是小于pivot,中间是pivot,后面的q+1到r之间是大于pivot的。
6、递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
7、递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。
8、privatestaticvoidquickSortInternally(int[]a,intp,intr){\nif(p>=r){return;}\n\nintq=partition(a,p,r);//获取分区点\nquickSortInternally(a,p,q-1);\nquickSortInternally(a,q+1,r);\n}\n分区点代码实现
/**\n*获取分区点\n*/\nprivatestaticintpartition(int[]a,intp,intr){\nintpivot=a[r];\ninti=p;\nfor(intj=p;j<r;j++){\nif(a[j]<pivot){\nif(i==j){\n++i;\n}else{\ninttmp=a[i];\na[i++]=a[j];\na[j]=tmp;\n}\n}\n}\n\ninttmp=a[i];\na[i]=a[r];\na[r]=tmp;\n\nSystem.out.println("partitioni="+i);\nreturni;\n}\n性能分析
快速排序是一种原地排序算法。
9、其最坏情况的时间复杂度是O(n^2),平均情况时间复杂度是O(nlogn)。
10、不像快速排序,归并排序是一个稳定排序,而且可以轻易地被采用在链表上。归并排序的主要缺点,是在最佳情况下需要O(n)额外的空间。
关于quickset是什么意思?用法、例句到此分享完毕,希望能帮助到您。