Susun semula tatasusunan supaya arr = i, menggunakan C++

PHPz
Lepaskan: 2023-09-13 11:25:02
ke hadapan
1081 orang telah melayarinya

重新排列一个数组,使得 arr = i,使用 C++

Kami mempunyai tatasusunan jenis integer positif, dengan mengandaikan ia ialah arr[], saiznya boleh diberikan sewenang-wenangnya, elemen dalam tatasusunan harus lebih besar daripada 0 tetapi kurang daripada saiz tatasusunan. Tugasnya adalah untuk menyusun semula tatasusunan supaya jika arr[i] sama dengan 'i', maka 'i' wujud dalam tatasusunan, jika tidak, tetapkan elemen arr[i] kepada -1 dan cetak hasil akhir.

Mari kita lihat pelbagai senario input dan output untuk masalah ini:

Input − int arr[] = {0, 8 , 1 , 5, 4, 3, 2, 9 }

Output − Tatasusunan yang disusun semula ialah: 0 1 2 3 4 5 -1 -1#🎜🎜

Penjelasan − Kami mempunyai tatasusunan integer bersaiz 8, dan semua elemen dalam tatasusunan adalah kurang daripada 8. Sekarang, kita akan menyusun semula tatasusunan iaitu

arr[0] = 0(present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = 3(present in an array)
arr[4] = 4(present in an array)
arr[5] = 5(present in an array)
arr[6] = -1(NOT present in an array)
arr[7] = -1(NOT present in an array)
Salin selepas log masuk

input− int arr[] = {1, 2, 6, 9, 10}#🎜 #

Output

− Susun semula tatasusunan supaya arr[i] = i ialah: -1 1 2 -1 -1

Penjelasan

∜ Kami mendapat tatasusunan integer bersaiz 5, dan semua elemen dalam tatasusunan mempunyai nilai kurang daripada atau lebih besar daripada 5. Sekarang, kita akan menyusun semula tatasusunan iaitu

arr[0] = -1(NOT present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = -1(NOT present in an array)
arr[4] = -1(NOT present in an array)
Salin selepas log masuk
Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut:

    Masukkan tatasusunan jenis integer dan Kira saiz tatasusunan.
  • Cetak tatasusunan sebelum mengisih dan panggil fungsi Menyusun semula(arr, saiz)
  • #🎜🎜🎜#Dalam fungsi Menyusun semula (arr, saiz) Dalaman
  • mengisytiharkan pembolehubah jenis integer, dengan mengandaikan ia adalah ptr
    • #🎜 dari🎜##🎜 i hingga 0 memulakan gelung sehingga i kurang daripada saiz. Di dalam gelung, gelung lain bermula dari j hingga 0 sehingga j kurang daripada saiz.

    • Di dalam gelung, semak jika arr[j] = i, kemudian tetapkan ptr = arr[j], arr[j] = arr[i], arr[ i] = ptr dan keluar dari gelung.

    • Mulakan gelung dari i ke saiz. Di dalam gelung, semak sama ada arr[i]! = i, kemudian tetapkan arr[i] kepada -1.

    • Cetak tatasusunan selepas menyusun semula nilai tatasusunan.
  • Contoh

    #include <iostream>
    using namespace std;
    void Rearranging(int arr[], int size){
       int ptr;
       for(int i = 0; i < size; i++){
          for(int j = 0; j < size; j++){
             if(arr[j] == i){
                ptr = arr[j];
                arr[j] = arr[i];
                arr[i] = ptr;
                break;
             }
          }
       }
       for(int i = 0; i < size; i++){
          if(arr[i] != i){
             arr[i] = -1;
          }
       }
    }
    int main(){
       int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 };
       int size = sizeof(arr) / sizeof(arr[0]);
       //calling the function to rearrange an array such that arr[i] = i
       Rearranging(arr, size);
       //Printing the array
       cout<<"Rearrangement of an array such that arr[i] = i is: ";
       for(int i = 0; i < size; i++){
          cout << arr[i] << " ";
       }
    }
    Salin selepas log masuk
  • Output

Jika kita menjalankan kod di atas# ia akan menjana kod output berikut🎜 #
Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1
Salin selepas log masuk

Atas ialah kandungan terperinci Susun semula tatasusunan supaya arr = i, menggunakan C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan