popsub安装包百度云 popsub


popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
popsub安装包百度云 popsub

文章插图
快速排序 In-place
/**
* 快速排序(递归)
*
【popsub安装包百度云 popsub】* ①. 从数列中挑出一个元素,称为"基准"(pivot) 。
* ②. 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(相同的数可以到任一边) 。在这个分区结束之后,该基准就处于数列的中间位置 。这个称为分区(partition)操作 。
* ③. 递归地(recursively)把小于基准值元素的子数列和大于基准值元素的子数列排序 。
* @param arr 待排序数组
* @param low 左边界
* @param high 右边界
*/
public static void quickSort(int<> arr, int low, int high){
if(arr.length <= 0) return;
if(low >= high) return;
int left = low;
int right = high;
int temp = arr; //挖坑1:保存基准的值
while (left < right){
while(left < right && arr >= temp){ //坑2:从后向前找到比基准小的元素,插入到基准位置坑1中
right--;
}
arr = arr;
while(left < right && arr <= temp){ //坑3:从前往后找到比基准大的元素,放到刚才挖的坑2中
left++;
}
arr = arr;
}
arr = temp; //基准值填补到坑3中,准备分治递归快排
System.out.println("Sorting: " + Arrays.toString(arr));
quickSort(arr, low, left-1);
quickSort(arr, left+1, high);
}
以下是快速排序算法复杂度:
平均时间复杂度最好情况最坏情况空间复杂度O(nlog?n)O(nlog?n)O(n2)O(1)(原地分区递归版)快速排序排序效率非常高 。虽然它运行最糟糕时将达到O(n2)的时间复杂度, 但通常平均来看, 它的时间复杂为O(nlogn), 比同样为O(nlogn)时间复杂度的归并排序还要快. 快速排序似乎更偏爱乱序的数列, 越是乱序的数列, 它相比其他排序而言, 相对效率更高 。
最后,作者希望让大家对《Java数据结构》整体有个全面的了解,知道什么是数据结构,离我们工作中有多远,而不是一个深不可测的神秘物件 。里面的细节,篇幅有限可能不能描述完,但是只要同学们的方向没有搞错,那只要针对每个点再详细的看看即可 。
面试和工作,这些都是离不开的,当同学们有个完整的认识之后,一定要在工作中留心,留意每个用到的地方 。
【End】

    推荐阅读