gpt4 book ai didi

java - 如何构造此快速排序以在特定索引值处停止快速排序并开始选择排序?

转载 作者:行者123 更新时间:2023-12-01 15:39:14 25 4
gpt4 key购买 nike

我有一个有效的快速排序和一个也有效的选择排序 - 我想使用快速排序对随机整数的 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 例程以接受 startend 参数,以便您可以仅对数组的一小部分进行选择排序。

关于java - 如何构造此快速排序以在特定索引值处停止快速排序并开始选择排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8350101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com