气泡排序不排序
Bubble Sort not sorting
我正在尝试实现气泡排序,但最终,列表根本不排序。
看起来像这样,我找不到错误:
void sort(int values[], int n)
{
//Printing unsorted list
for(int l = 0; l < n; l++)
{
printf("Unsorted %i n", values[l]);
}
// Implement Bubble sort
for(int j = 0; j <= n-1; j++)
{
int swaps = 0;
int k = 0;
for(int i = 0; i < n - k; i++)
{
if(values[i] > values[i+1])
{
swap(&values[i], &values[i+1]);
swaps++;
printf("swaps: %in", swaps);
//Printing sorted list
for(int m = 0; m < n; m++)
{
printf("Sorted %i n", values[m]);
}
}
if(swaps == 0)
{
return;
}
k++;
}
}
}
未分类列表是:
Unsorted 34
Unsorted 17
Unsorted 51
Unsorted 12
Unsorted 33
Unsorted 56
Unsorted 11
Unsorted 31
Unsorted 16
Unsorted 55
和排序的列表出现了:
Sorted 17
Sorted 34
Sorted 12
Sorted 33
Sorted 51
Sorted 56
Sorted 11
Sorted 31
Sorted 16
Sorted 55
ps:交换功能正在工作,我已经对其进行了测试。
我在您的代码中看到的主要问题在
中 for(int i = 0; i < n - k; i++)
{
if(values[i] > values[i+1])
{
swap(&values[i], &values[i+1]);
swaps++;
printf("swaps: %in", swaps);
//Printing sorted list
for(int m = 0; m < n; m++)
{
printf("Sorted %i n", values[m]);
}
}
if(swaps == 0)
{
return;
}
k++;
}
您在if
语句中打印所有值,这是错误的。而且,如果不互换第一个值,则该函数将在不做任何事情的情况下返回。
可能的解决方案将是
int swaps = 0;
for(int j = 0; j < n - 1; j++)
{
for(int i = 0; i < n - 1 ; i++)
{
if(values[i] > values[i+1])
{
swap(&values[i], &values[i+1]);
swaps++;
}
}
if(swaps == 0)
{
break;
}
}
printf("swaps: %in", swaps);
if(swaps == 0)
{
return;
}
//Printing sorted list
for(int m = 0; m < n; m++)
{
printf("Sorted %i n", values[m]);
}
提示如果swaps == 0
,此循环仍然不起作用。考虑集{17, 40, 39, 41}
。第一个元素没有发生掉期,但仍未分类。
我认为第二循环中存在问题
soln
int temp;
for(int j = 0; j <= n-1; j++)
{
int swaps = 0;
int k = 0;
for(int i = 0; i < n - j; i++)
{
if(values[i] > values[i+1])
{
temp=values[i];
values[i]=values[i+1];
values[i+1]=temp;
swaps++;
cout<<"swaps:"<<swaps<<"n";
}
}
}
for(int m = 0; m < n; m++)
{
cout<<"Sorted "<<values[m]<<"n";
}
,而且如果第一个否小于第二交换变量,则定义为零,并且程序退出
相关文章:
- 在气泡排序程序中未声明错误功能
- 气泡排序未正确循环
- 带有枚举方向/类型的气泡排序结构数组
- 在气泡排序中使用递归
- 如何在C++中实现气泡排序?
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- C++气泡排序的问题
- 气泡排序C++ OOP
- OOP 气泡排序C++程序
- 按升序对列表进行排序,C++使用气泡排序
- C++气泡排序
- 此气泡排序代码中的错误是什么?
- 气泡排序 2D 数组
- 如何使用气泡排序从最小到最大对 4 个数组进行排序? C++
- 添加气泡排序代码以排列列表
- 使用向量和气泡排序的动态内存分配
- 带修改(偏移)的气泡排序
- 使用C++进行气泡排序
- 气泡阵列在C 实现中排序
- 选择排序与气泡排序C++