合并排序函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了合并排序函数相关的知识,希望对你有一定的参考价值。

  1. public static void MergeSort(int[] array) {
  2. if(array.length>1){
  3. int elementsInA1=array.length/2;
  4. int elementsInA2=elementsInA1;
  5. if((array.length%2)==1)
  6. elementsInA2+=1;
  7.  
  8. int arr1[]=new int[elementsInA1];
  9. int arr2[]=new int[elementsInA2];
  10.  
  11. for(int i=0; i<elementsInA1; i++)
  12. arr1[i]=array[i];
  13.  
  14. for(int i=elementsInA1; i<elementsInA1+elementsInA2; i++)
  15. arr2[i-elementsInA1]=array[i];
  16.  
  17. MergeSort(arr1);
  18.  
  19. MergeSort(arr2);
  20.  
  21.  
  22. int i=0, j=0, k=0;
  23.  
  24. while(arr1.length!=j && arr2.length!=k){
  25. if(arr1[j]<=arr2[k]) {
  26. array[i]=arr1[j];
  27. j++;
  28. }else{
  29. array[i]=arr2[k];
  30. k++;
  31. }
  32. i++;
  33. }
  34.  
  35. while(arr1.length!=j){
  36. array[i]=arr1[j];
  37. i++;
  38. j++;
  39. }
  40. while(arr2.length!=k){
  41. array[i]=arr2[k];
  42. i++;
  43. k++;
  44. }
  45. }
  46. }

以上是关于合并排序函数的主要内容,如果未能解决你的问题,请参考以下文章

FlinkFlink BinaryExternalSorter 完全成熟的二进制格式排序器多路归并排序排序溢出合并

合并排序函数

合并K个排序链表

C++中STL中list的merge函数实现两个无序链表合并,合并后的链表是怎么排序的?例如合并1

有人可以帮助解释这种合并排序算法是如何工作的吗?

23. 合并K个排序链表