标签:quic 第一个 有关 return 深度 class span index i++
时间复杂度最坏n2,平均nlogn
解释:遍历一次O(n),快排采用分治法来遍历,看成二叉树,那么遍历的次数跟他的深度有关系,n个节点,那么深度至少是log(n+1),所以平均nlogn;二叉树最大深度那就是N了,所以最坏时间复杂度n2。
//找基准数,并放到中间 //此函数执行一次,就找到了一个基准数并且就放在了正确位置 int mid_index(arr[],left,right){ int i=left+1; int j=right; int temp=arr[i]; while(i<=j){ while(arr[i]<temp) i++; while(arr[j]>temp) j--; if(i<j) swap(arr[i],arr[j]); } //到了边界了 swap(arr[j],arr[left]); return j; } void quick_sort(arr[],left,right){ //保证长度至少为2 if(left>=right) return; int mid=mid_index(arr,left,right); quick_sort(arr,left,mid-1); quick_sort(arr,mid+1,right); }
边界问题分析(第一个while循环条件i<=j):
当i=j时,正好arr中心处,此时arr[i]==arr[j]:
标签:quic 第一个 有关 return 深度 class span index i++
原文地址:https://www.cnblogs.com/pacino12134/p/11294474.html