当前位置: 首页 > 后端技术 > Java

图灵学院JAVA资深架构师【第四期】

时间:2023-04-01 18:37:50 Java

下载:图灵学院JAVA高级架构师【第四期】publicclassSort{publicstatic>voidinsertionSort(AnyType[]a){insertionSort(a,0,a.length-1);}privatestatic>voidinsertionSort(AnyType[]a,intleft,intright){intj;//记录第一个比tmp小的元素的后一位的位置for(intp=left;p<=right;p++){AnyTypetmp=a[p];对于(j=p;j>left&&tmp.compareTo(a[j-1])<0;j--){a[j]=a[j-1];}a[j]=tmp;}}publicstatic>voidshellSort(AnyType[]arr){intj;for(intgap=arr.length/2;gap>0;gap/=2){for(inti=gap;i=gap&&tmp.compareTo(arr[j-gap])<0;j-=gap){arr[j]=arr[j-gap];}arr[j]=tmp;}}}privatestaticintleftChild(inti){returni*2+1;}privatestatic>voidperculateDown(AnyType[]arr,inti,intsize){AnyTypetmp=arr[i];for(intchild;(child=leftChild(i))>voidheapSort(AnyType[]arr){for(inti=arr.length/2;i>=0;i--){perculateDown(arr,i,arr.length);}for(inti=arr.length-1;i>=0;i--){swapReferences(arr,0,i);perculateDown(arr,0,i);}}privatestatic>voidswapReferences(AnyType[]arr,inti,intj){AnyTypetmp=arr[i];arr[i]=arr[j];arr[j]=tmp;}publicstatic>voidmergeSort(AnyType[]arr){AnyType[]tmp=((AnyType[])newComparable[arr.length]);mergeSort(arr,0,arr.length-1,tmp);}privatestatic>voidmergeSort(AnyType[]arr,intstart,intend,AnyType[]tmp){if(start>1;合并排序(arr,开始,中间,tmp);mergeSort(arr,mid+1,end,tmp);merge(arr,start,mid,end,tmp);}}privatestatic>voidmerge(AnyType[]arr,intstart,intmid,intend,AnyType[]tmp){inti=start,j=mid+1,k=start;while(i<=mid&&j<=end){if(arr[i].compareTo(arr[j])<0){tmp[k++]=arr[i++];}else{tmp[k++]=arr[j++];}}while(i<=mid){tmp[k++]=arr[i++];}while(j<=end){tmp[k++]=arr[j++];}for(intm=start;m<=结束;m++){arr[m]=tmp[m];}}publicstatic>快速作废排序(AnyType[]arr){quickSort(arr,0,arr.length-1);}privatestatic>voidquickSort(AnyType[]arr,intleft,intright){if(left+LENGTH_DIFF<=right){AnyTypepivot=medium(arr,left,right);inti=左,j=右;while(true){while(arr[++i].compareTo(pivot)<0);while(arr[--j].compareTo(pivot)>0);如果(i>AnyTypemedium(AnyType[]arr,intleft,intright){intcenter=(left+right)/2;if(arr[center].compareTo(arr[left])<0){swapReferences(arr,center,left);}if(arr[left].compareTo(arr[right])>0){swapReferences(arr,left,right);}if(arr[center].compareTo(arr[right])<0){swapReferences(arr,center,right);}returnarr[right];}privatefinalstaticintLENGTH_DIFF=20;}

猜你喜欢