我有一个快速排序工作,和一个选择排序也工作-我想排序随机整数的int[]
快速排序直到array.length = 1
,然后为最后一个元素调用选择排序。我知道我需要有一个条件来检查array.length
,然后当length = 1
时,返回selectionSort()
,我不确定如何在quickSort()
内的递归调用中构建它。下面是我的两个排序方法:
快速排序:
public void quickSort(int array[], int start, int end) {
int i = start; // index val of left-to-right scan
int k = end; // index val of right-to-left scan
if (end - start >= 1){
PIVOT = array[start];
while (k > i){
while (array[i] <= PIVOT && i <= end && k > i)
i++;
while (array[k] > PIVOT && k >= start && k >= i)
k--;
if (k > i)
swap(array, i, k);
}
swap(array, start, k);
quickSort(array, start, k - 1);
System.out.println(k);
quickSort(array, k + 1, end);
}
return;
}
选择排序:
public void selectionSort(int[] nums) {
//nums[0] = array[0];
System.out.println(nums.length);
for (int i = 0; i < (nums.length - 1); i++) {
for (int j = i + 1; j < nums.length; j++) {
if (nums[i] > nums[j]) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
}
你已经差不多做到了。有了这条线,end - start
,你得到了长度。如果该长度小于SelectionSortThreshold
,则仅对当前长度运行插入排序。这意味着修改selectionSort
例程以接受start
和end
参数,以便您可以选择仅对数组的一小部分进行排序。