// Merge Sort functionpublicstaticvoidmergeSort(int[]arr,intleft,intright){if(left<right){// Find the middle pointintmid=left+(right-left)/2;// Sort first and second halvesmergeSort(arr,left,mid);mergeSort(arr,mid+1,right);// Merge the sorted halvesmerge(arr,left,mid,right);}}// Merge two subarrays of arr[]publicstaticvoidmerge(int[]arr,intleft,intmid,intright){// Sizes of two subarraysintn1=mid-left+1;intn2=right-mid;// Create temp arraysint[]L=newint[n1];int[]R=newint[n2];// Copy data to temp arraysfor(inti=0;i<n1;++i)L[i]=arr[left+i];for(intj=0;j<n2;++j)R[j]=arr[mid+1+j];// Merge the temp arraysinti=0,j=0;intk=left;while(i<n1&&j<n2){if(L[i]<=R[j]){arr[k++]=L[i++];}else{arr[k++]=R[j++];}}// Copy remaining elements of L[]while(i<n1){arr[k++]=L[i++];}// Copy remaining elements of R[]while(j<n2){arr[k++]=R[j++];}}
✅ 5. Heap Sort
publicclassHeapSort{publicstaticvoidheapSort(int[]arr){intn=arr.length;// Build max heapfor(inti=n/2-1;i>=0;i--)heapify(arr,n,i);// Extract elements one by onefor(inti=n-1;i>0;i--){inttemp=arr[0];arr[0]=arr[i];arr[i]=temp;heapify(arr,i,0);}}privatestaticvoidheapify(int[]arr,intn,inti){intlargest=i,l=2*i+1,r=2*i+2;if(l<n&&arr[l]>arr[largest])largest=l;if(r<n&&arr[r]>arr[largest])largest=r;if(largest!=i){inttemp=arr[i];arr[i]=arr[largest];arr[largest]=temp;heapify(arr,n,largest);}}}
Top comments (0)