1
我正在编写一个快速排序程序。部分quicksort涉及使用insertionsort,但它只对一定范围内的元素进行排序,因为quicksort处理其余部分。我试图模仿我的教科书提供的方法,使用使用插入排序仅对数组的一部分进行排序
public static void insertionSort(int a[], int left, int right)
但我很努力弄清楚如何使用左和右。这是不使用左,右的参数插入排序代码:
public static void insertionSort(int a[], int left, int right) {
int j;
for (int p = 1; p < a.length; p++) {
int tmp = a[p];
for(j = p; j > 0 && tmp < a[j - 1]; j--) {
a[j] = a[j-1];
}
a[j] = tmp;
}
}
如果我要加入左,右参数,以帮助排序只有数组的一部分,他们会在哪里申请?
感谢您的帮助。
我会解释左右两边是包含还是排他性,并解释左侧和右侧是基于零还是基于一个索引。 – Rainbolt
感谢您的帮助。我尝试过这种方式,并且遇到了一个小小的异常情况,而且排序不正确。我用p
@Rainbolt这很好的澄清。约翰,这就是雨布要我澄清的事情。很高兴你想出来了。 – Ryan