gpt4 book ai didi

c - 其中哪一个是冒泡排序或者两者都是?

转载 作者:太空狗 更新时间:2023-10-29 15:28:30 24 4
gpt4 key购买 nike

这两种算法按升序对日期进行排序。这2种排序算法叫冒泡排序吗?

1) 首先它通过交换从所有整个数组中找到最小的并将它放在索引 0 中,依此类推。

或者换句话说 --> 在每次迭代之后,它通过使用交换将最小值插入数组的开头。

for (int i = 0; i != arrayEnd - 1; i++) {
for (j = i + 1; j != arrayEnd; j++) {
if (A[i] > A[j]) {
temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}

2) 在每次迭代后,它通过使用交换将最大值插入数组的末尾。

while (!isSorted) {
isSorted = true;
for (int i = 0; i < lastUnsorted; i++) { // lastUnsorted = arrayLength - 1;
if (A[i] > A[i + 1]) {
temp = A[i];
A[i] = A[i + 1];
A[i + 1] = temp;
isSorted = false;
}
}
lastUnsorted--;
}

它们都叫冒泡排序?

最佳答案

在这两种情况下,它都遵循冒泡排序,但在第二种情况下,冒泡排序通过删除数组末尾的最大元素来提高效率。

现在,当数组有一个由最大元素组成的长排序尾部时,这仍然会进行很多不必要的迭代,假设您有 k,k-1,...,1 作为前 k 个元素,k+1 到之后依次为 100000000。标准冒泡排序将(几乎)整个数组传递 k 次。

但是你可以试试这个:

while(!isSorted){
isSorted = true;
int lastSwap = lastUnsorted;
for (int i = 0; i < lastSwap; i++) { // lastUnsorted = arrayLength - 1;
if (A[i] > A[i + 1]) {
temp = A[i];
A[i] = A[i + 1];
A[i + 1] = temp;
isSorted = false;
currentSwap = j;
}
}
lastUnsorted--;
lastSwap = currentSwap;
}

关于c - 其中哪一个是冒泡排序或者两者都是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42178562/

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