2014-10-29 2 views
-1

при тестировании программы я обнаружил, что она выдавала неправильный результат. я пытался найти ошибку, но я не могу помочь.неправильный вывод для сортировки пузыря сортировка

// bubble.cpp: Определяет точку входа для консольного приложения. //

#include "stdafx.h" 
#include <iostream> 
#include <stdlib.h> 

using namespace std; 

void bubbleSort3 (int x [ ] , int n) { 
    bool exchanges; 
    int temp; 
    do { 
     n--; //make loop smaller each time 
     exchanges = false; // assume this is last pass over array 
     for (int i=0; i < n-1; i++) { 
      if (x [ i ] > x [ i+1 ]) { 
       temp = x[ i ]; 
       x [ i ] = x [ i+1 ]; 
       x [ i+1 ] = temp; 
       exchanges = true; // after exchange must look again 
      } 
     } 
    } 
    while (exchanges); 
} 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    int array[4]={50,3,33,1}; 

    bubbleSort3 (array , 4); 

    for (int i=0;i<4;i++){ 
     cout << " "<< array[i]<< " "; 
    } 
    cout <<endl; 
    system("pause");  
    return 0; 
} 
+0

Моим советом было бы вывести отладчик и выполнить код. – NPE

+0

Я пробовал это, но я не могу найти свою ошибку, так как я новичок в программировании – johnnitro

+1

Тогда вам нужно это делать. Stackoverflow не является заменой для отладки. – dandan78

ответ

0

изменить эту строку для (INT I = 0; я < п, я ++) он будет работать

+0

, пожалуйста, примите решение, которое работает для вас или, по крайней мере, проголосует за него –

0

Перемещение после вашей N-, цикл

void bubbleSort3 (int x [ ] , int n) { 
    bool exchanges; 
    int temp; 
    do { 
     exchanges = false; // assume this is last pass over array 
     for (int i=0; i < n-1; i++) { 
      if (x [ i ] > x [ i+1 ]) { 
       temp = x[ i ]; 
       x [ i ] = x [ i+1 ]; 
       x [ i+1 ] = temp; 
       exchanges = true; // after exchange must look again 
      } 
     } 
     n--; //make loop smaller each time 
    } 
    while (exchanges); 
} 
Смежные вопросы