//create swap function
void swap(int* a, int* b)
{
//implement swap function
int temp = *a;
*a = *b;
*b = temp;
}
void sort(int arrayofval[], int n)
{
int burst = 0;
do
{
for(int i=0, burst = 0; i < n; i++)
if(arrayofval[i] > arrayofval[i+1])
{
swap(&arrayofval[i], &arrayofval[i+1]);
burst++;
}
}
while(burst != 0);
return;
你好!我试图在C中实现冒泡排序和交换功能并且碰到一点墙:-(当调试时,似乎我的交换功能和初始循环工作。但是,似乎我的功能退出之后第一个循环并且不会重复循环&gt;交换值过程,因为条件为:
while(burst!= 0)
没有运行。任何人都可以帮我理解这一点吗?
答案 0 :(得分:2)
它的工作正常,但你应该i < n-1
,因为arrayofval[i+1]
会超出i = n-1
的数组。
#include <stdio.h>
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void sort(int arrayofval[], int n)
{
int burst, i = 0;
do
{
for(i=0, burst = 0; i < n-1; i++)
if(arrayofval[i] > arrayofval[i+1])
{
swap(&arrayofval[i], &arrayofval[i+1]);
burst++;
}
}
while(burst != 0);
}
int main( int argc, char ** argv ) {
int list[] = {3,2,1};
sort( list, 3 );
printf("%d %d %d\n", list[0], list[1], list[2] );
}