Как увидеть число движений в C ++ логическое? - PullRequest
0 голосов
/ 23 октября 2018

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

    #include <iostream>
using namespace std;

void pindah (int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

void tukar (int arr[], int n) {
    int i, j;
    bool trade;
    for (i=0; i < n-1; i++) {
        trade = false;
        for (j=0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                pindah(&arr[j], &arr[j+1]);
                trade = true;
            }
        }
        if (trade == false)
            break;
    }
}

void cetakArray (int arr[], int n) {
    int i;
    for (i=0; i<n; i++) {
        cout << arr[i] << " "; //tampil data
    }
}

int main () {
    int arr[] = {4, 6, 7, 2, 1, 5, 8, 10, 9, 3};
    int n = sizeof(arr) / sizeof(int); //menghitung jumlah data array
    cout << "setelah diurutkan : \n";
    tukar (arr, n);
    cetakArray (arr, n);

}

помогите пожалуйста

1 Ответ

0 голосов
/ 23 октября 2018

Предполагая, что «в правильной последовательности» вы имеете в виду от малого к большому, и предполагая, что вы готовы использовать C ++ 11, мы можем легко получить это с помощью лямбда-функции.См. Следующий пример.

  #include <vector>
  #include <algorithm>

  std::vector<int> values({4, 6, 7, 2, 1, 5, 8, 10, 9, 3});

  int number_of_moves = 0;

  std::sort(begin(values), end(values), [&](int lhs, int rhs) 
  {
    if (lhs > rhs) 
      return false; 

    ++number_of_moves;

    std::cout << "I am going to swap " << lhs << " with " << rhs << '\n'; 

    return true; 
  });

  std::cout << "I took me " << number_of_moves << " move(s) to sort the vector\n";

Примечание: мне не совсем понятно, что вы подразумеваете под "движениями в булевских значениях в c ++", поэтому я решил напечатать числа, которые будут заменены.

РЕДАКТИРОВАТЬ: на основе комментариев, я думаю, вы хотите посчитать количество движений, поэтому я добавил счетчик.Обратите внимание, что bool может быть только истинным / ложным и не может использоваться для подсчета.

...