gpt4 book ai didi

c++ - 试图了解我的冒泡排序方法有什么问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:18 24 4
gpt4 key购买 nike

我不确定为什么我的代码不起作用。它们都打印相同的值而不是对它们进行排序。输出没有改变,数组似乎仍然未排序。有什么办法可以解决这个问题吗?我想了解原因。

    void BSort::BubbleSort()
{ int temp =0;
for(int index = 0; index < sizes; index++){
for(int index2 = 0; index2 < sizes-1; index2++ ){
if(Array1[index2] > Array1[index2+1]){
temp = Array1[index2];
Array1[index2] = Array1[index2+1];
Array1[index2+1] = temp; }
}
}


}

/*************************************************************************/
//--------------------------- BubbleSort2( ) --------------------------//
/*************************************************************************/


void BSort::BubbleSort2()
{
int temp =0;
for(int index = 0; index < sizes-1; index++){
for(int index2 = sizes-1; index2 > index; index2--){
if( Array2[index2] < Array2[index2-1]){
temp = Array2[index2];
Array2[index2] = Array2[index2-1];
Array2[index2-1] = temp;
}
}
}
}

/*************************************************************************/
//----------------------------- CombSort( ) ---------------------------//
/*************************************************************************/


void BSort::CombSort() {
int temp = 0;
int tempsize =sizes;
int index2;
while((tempsize = int(tempsize/1.3)) >1){
for(int index = sizes-1; index >= tempsize; index--){
index2 = index-tempsize;
if(Array3[index] < Array3[index2]){
temp = Array3[index];
Array3[index] = Array3[index2];
Array3[index2] = temp;
}
}
bool testcase = true;
for(int in = 0; in < sizes; in++){
for(int in2 =sizes-1,testcase = false; in2 > in; in2--){
if(Array3[in2] < Array3[in2-1])
{ temp = Array3[in2];
Array3[in2] = Array3[in2-1];
Array3[in2-1] = temp;
testcase = true;
}
}
}
}



}

主文件

#include<iostream>



#include<cstdlib>

#include "BSort.h"
using namespace std;


int main(void)
{


int a[] = {-2, 88, 6, -1, 10, 15, 3, 12, -11, 9, 33, 21, 4, 7, 45, 55, 62, 18, 0, 20};


BSort S(a,20);


cout << endl << " Display Array elements before sorting";
S.DisplayListElements();

// Calling bubble sort
S.BubbleSort();
S.BubbleSort2();
S.CombSort();

cout << endl << endl << " Display Array elements Increasing order After BubbleSort";
S.DisplayListElements();



system("pause");
return 0;
}

最佳答案

试试这个.. 基本上在每次迭代之后你需要运行内部循环比外部变量少一个......主要是因为它已经排序

 void BSort::BubbleSort()
{ int temp =0;
for(int index = 0; index < sizes; index++){
for(int index2 = 0; index2 < sizes-index; index2++ ){
if(Array1[index2] > Array1[index2+1]){
temp = Array1[index2];
Array1[index2] = Array1[index2+1];
Array1[index2+1] = temp; }
}
}


}

关于c++ - 试图了解我的冒泡排序方法有什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990447/

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