老师您好,这里截取了你GitHub中的代码,我主要想问的问题有两个,一个是红色函数的参数是对应蓝色部分的参数的吗?,第二个是l,r指是什么?
l是指的是最左边的元素的,r是最右边的元素,下面这个又好像不对(这两个问题理解上有点乱。)
int mid = (l+r)/2;
//追问补充补充
1. package SF;
2.
3. import java.util.Arrays;
4.
5. public class MergeSort {
6.
7. private MergeSort(){
8.
9. }
10. private static void merge(int [] arr,int l,int mid ,int r) {
11.
12. int [] aux =Arrays.copyOfRange(arr, l, r+1);
13.
14. int i=l;
15. int j=mid+1;
16. for (int k=l;k<=r;k++) {
17. if(i>mid) {
18. arr[k]=aux[j];
19. j++;
20. }
21. else if(j>r) {
22. arr[k]=aux[i];
23. i++;
24. }
25.
26. else if(aux[i-l]<aux[j-l]) {
27.
28. arr[k]=aux[i-1];
29. i++;
30. }
31. else
32. {
33. arr[k]=aux[j-l];
34. j++;
35. }
36. }
37. }
38.
39. private static void sort(int [] arr,int l, int r) {
40. System.out.println("l =" + l + ", r =" + r );
41. if(l>=r)
42. return ;
43. int mid =(l+r)/2;
44. sort(arr,l,mid);
45. sort(arr,mid+1,r);
46. merge(arr,l,r, mid);
47.
48. }
49.
50.
51. public static void sort(int [] arr) {
52. int n =arr.length;
53. sort(arr, 0, n-1);
54. }
55. public static void main(String[] args) {
56. int [] arr= {9,8,7,6,5,4,3,2,1};
57. InsertSort.sort(arr);
58. for (int i = 0; i < arr.length; i++) {
59. System.out.print(arr[i]);;
60. System.out.print(" ");
61. }
62. }
63. }