算法面试——排序算法手撕:快排、归并、堆排模板 面试手撕排序算法是必考环节。快排、归并、堆排这三种手写频率最高。一、快速排序publicvoidquickSort(int[]arr,intlow,inthigh){if(lowhigh)return;intpivotpartition(arr,low,high);quickSort(arr,low,pivot-1);quickSort(arr,pivot1,high);}privateintpartition(int[]arr,intlow,inthigh){intpivotarr[low];while(lowhigh){while(lowhigharr[high]pivot)high--;arr[low]arr[high];while(lowhigharr[low]pivot)low;arr[high]arr[low];}arr[low]pivot;returnlow;}二、归并排序publicvoidmergeSort(int[]arr,intleft,intright){if(leftright)return;intmidleft(right-left)/2;mergeSort(arr,left,mid);mergeSort(arr,mid1,right);merge(arr,left,mid,right);}privatevoidmerge(int[]arr,intleft,intmid,intright){int[]tempnewint[right-left1];intileft,jmid1,k0;while(imidjright)temp[k]arr[i]arr[j]?arr[i]:arr[j];while(imid)temp[k]arr[i];while(jright)temp[k]arr[j];System.arraycopy(temp,0,arr,left,temp.length);}三、堆排序publicvoidheapSort(int[]arr){for(intiarr.length/2-1;i0;i--)heapify(arr,i,arr.length);for(intiarr.length-1;i0;i--){swap(arr,0,i);heapify(arr,0,i);}}privatevoidheapify(int[]arr,inti,intn){intlargesti;intleft2*i1,right2*i2;if(leftnarr[left]arr[largest])largestleft;if(rightnarr[right]arr[largest])largestright;if(largest!i){swap(arr,i,largest);heapify(arr,largest,n);}} 觉得有用的话点赞 关注【张老师技术栈】吧