Computer >> Máy Tính >  >> Lập trình >> C ++

Chuyển một mảng sang dạng thu gọn (Hashing) trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để chuyển đổi một mảng sang dạng thu gọn của nó bằng cách sử dụng hàm băm.

Đối với điều này, chúng tôi sẽ được cung cấp một mảng. Nhiệm vụ của chúng ta là chuyển đổi mảng đã cho ở dạng rút gọn để nó chỉ chứa các phần tử từ 0 đến n-1.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
//converting array to its reduced form
void convert(int arr[], int n){
   // copying the elements of array
   int temp[n];
   memcpy(temp, arr, n*sizeof(int));
   sort(temp, temp + n);
   //creating a hash table
   unordered_map<int, int> umap;
   int val = 0;
   for (int i = 0; i < n; i++)
   umap[temp[i]] = val++;
   //putting values in the hash table
   for (int i = 0; i < n; i++)
   arr[i] = umap[arr[i]];
}
void print_array(int arr[], int n) {
   for (int i=0; i<n; i++)
      cout << arr[i] << " ";
}
int main(){
   int arr[] = {10, 20, 15, 12, 11, 50};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Given Array :\n";
   print_array(arr, n);
   convert(arr , n);
   cout << "\nConverted Array:\n";
   print_array(arr, n);
   return 0;
}

Đầu ra

Given Array :
10 20 15 12 11 50
Converted Array:
0 4 3 2 1 5