Code thuật toán sắp xếp nổi bọt bị sai

Thay đổi thuật toán nổi bọt nên giờ nó lại sắp xếp sai số 0. (chiều hướng tăng dần)
Ngồi tìm mãi ko hiểu nhầm chỗ nào, mời các chuyên gia vào trợ giúp. Trước có bác chỉ dấu == thì fix ok rồi

#include<iostream>

using namespace std;

int kiemtraTt(int s,int n,int a[30]){
    for(int i=0;i<n;i++){
        if(s==a[i]){
            return i;
            break;
        }
    }
    return 0;
}

bool kiemtraSo(int s, int t, int c[30]){
    for(int i=t-1;i>=0;i--){
        if(s==c[i]){
            return false;
            break;
        }
    }
    return true;
}

int dem(int t,int n,int a[20]){
    int k=0;
    for (int i=0;i<n;i++){
        if(a[i]==t){
            k++;
        }
    }
    return k;
}

int main(){
    int n;
    cin >> n;
    int a[30];
    int b[30];
    for(int i=0;i<n;i++){
        cin >> a[i];
    }

    for(int i=0;i<n;i++){
        b[i]=dem(a[i],n,a);
    }

    int c[30];
    c[0]=a[0];
    int t=1;
    
//kiểm tra lặp và đưa ra mảng mới không trùng lặp
    for(int i=1;i<n;i++){
        bool kiemtra=kiemtraSo(a[i],t,c);
        if(kiemtra==true){
            c[t]=a[i];
            t++;
        }
    }


    // sắp xếp phần tử của mảng mới

     for(int i=0;i<t-1;i++){
       for(int j=0; j<t-i-1;i++){
           if(c[j]>c[j+1]){
                 int tam = c[j];
                 c[j] = c[j+1];
                 c[j+1] = tam;
              }
          }
     }


    int d[t];

// tạo mảng ghi dữ liệu lặp theo thứ tự của mảng mới 
    for(int i=0;i<t;i++){
        int kiemtra2=kiemtraTt(c[i],n,a);
            d[i]=b[kiemtra2];
    }

    for(int i=0;i<t;i++){
        cout << c[i] << " - " << d[i] <<"; ";
    }
    return 0;
}

Untitled

(số - lần lặp)
kết quả đúng: 0 - 1; 1 - 1; 4 - 2

Chú ý chỗ sắp xếp, coi chừng lẫn lộn i và j

5 Likes

Bác Vũ lúc trước dev browser Photon đấy à :smiley:
(hehe mượn topic này ké 1 tý :v)

2 Likes

Mới thấy 1 lỗi: for thứ 2 để “j++, ko phải i++”

Ừ là mình đây :slight_smile:
Post must be at least 20 characters

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?