for (int index = 0; index < size -1; index ++) {
for (int index2 = 0; index2 < size - index; index2 ++) {
if (index2 != (size - index) && array[index2] > array[index2 + 1] ) {
store = array[index2 + 1];
array[index2 + 1] = array[index2];
array[index2] = store;
printf ("%d",array[index2]);
swap ++;
comparison ++;
}
}
}
所以这是使用冒泡排序算法交换和比较数组元素的代码。它适用于所有情况,但除了带有两个元素的数组。 我用C来做这个程序。我使用指针来声明数组。
例如:
input: [2,0],
output: [0,1]
intput: [3.8],
output: [3,1]
答案 0 :(得分:1)
它因一个错误而关闭。根据您的代码,第二个循环应该是
for (int index2 = 0; index2 < size - index -1; index2 ++){ ...
答案 1 :(得分:0)
for(i=1;i<n;++i)
for(j=0;j<(n-i);++j)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
其中n =&#34;数组的大小&#34; a [] = array
答案 2 :(得分:0)
输入到输出的第一个示例将0移动到第一个位置,因为if语句是true array [index2]&gt;数组[index2 + 1]。下一个示例剂量不传递参数的这一部分,使得if参数返回一个false语句(因此它永远不会将8移动到3点。接下来,我看到的问题是循环运行并要求一个不是一部分的值示例数组[2] = 3,4;所以当count = 2时,如果你有数组[count + 1],你就会抓住填充变量所需的下一组位数。这是你为什么要得到垃圾输出。希望这会有所帮助。我建议在它获得一个不存在的值之前停止循环。
#include "stdlib.h" // includes _countof() returns the number of elements in the array
Array[2] = 1,2;
for(element = 0; _countof(array) != element && ...; element++)
{
}
_countof(array)返回2 这部分将取代第二个for循环的第一部分。它会在循环超过数组限制之前停止循环,无论它的大小是多少。 添加其他部分到这个论点,祝你好运,希望这会有所帮助。
答案 3 :(得分:0)
以下是冒泡排序算法的示例
#include <stdio.h>
int bubbleSort( int *array )
{
for (int c = 0 ; c < ( n - 1 ); c++)
{
for (int d = 0 ; d < n - c - 1; d++)
{
if (array[d] > array[d+1]) /* For decreasing order use < */
{
int swap = array[d];
array[d] = array[d+1];
array[d+1] = swap;
}
}
}
return 0;
}
但是,如果我要实现它,我将使用三个异或语句来实现交换,因为那时不需要交换变量。它会快很多