繁体   English   中英

无法正确使用do-while循环来实现冒泡排序

[英]Unable to use do-while loop correctly to implement a bubble sort

//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中实现冒泡排序和交换功能,并且碰壁了:-(调试时,似乎交换功能和初始循环有效。但是,似乎我的函数在第一个之后退出循环并且不重复循环>交换值过程,因为以下条件:

while(突发!= 0)

没有运行。 谁能帮助我进一步了解这一点?

它工作得很好,除了您应该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] );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM