good question.
I would recommend you to apply AHP to assign the weights of each criteria and TOPSIS to score and rank the criteria.
Most algorithms of MCDC (Multi-Criteria Decision Making) have, indeed, normalisation methods.
Let's analyse your case:
Your criteria is : Price, Size, Electric/Non electric, Distance.
Price, size and distance can be computed as integer/float numbers while for the qualitative data point you have some options...
- Using boolean logic. (So Electric = 1, Non-Electric = 0)
- Using fuzzy logic. (So Electric = [0-1]) 1
- Using intuisionistic fuzzy logic (So Electric = [0-1] , Non-Electric = [0-1]) 2
- Using neutrosophic logic (So Electric = [t,i,f] where t is the degree in which the car is electric, i is the degree in which you cannot tell, f is the degree in which the car is not electric. 3
You should use boolean logic if your decision space is comprised by cars that are fully electric or fully not electric, but nothing in the middle. Fuzzy logic if there are different degrees in which your car is electric (for instance, if you have an hybrid car). You should use intuisionistic fuzzy logic if you want to also consider the degree in which a certain car is NOT electric. You should use neutrosophic logic if you have incomplete information, so let's say there are some cars that you cannot tell what they are.
To simplify and since you only have two categories, I would stick to boolean logic in your particular case and I'm assuming the electric category is desired over non-electric.
Let's go through the TOPSIS algorithm 4 ...
From your example, the decision matrix would look something like this:
//DECISION MATRIX
Price Size Type Distance
Car1 = [250] , [300] , [1] , [30]
Car2 = [650] , [200] , [0] , [50]
Car3 = [100] , [600] , [0] , [10]
Now, you have to compute the normalised decision matrix. To do that first you have to compute the performance value.
The formula is:

That means that for each criteria you have to power each case by 2, sum all cases and then compute the square root of the sum.
So...
//DECISION MATRIX + Performance Score
Price Size Type Distance
Car1 = [250] , [300] , [1] , [30]
Car2 = [650] , [200] , [0] , [50]
Car3 = [100] , [600] , [0] , [10]
pScore = [703] , [700] , [1] , [60]
Once you have the performance score you can normalise. To do that you simply compute the division between each value of your criteria with the corresponding performance score.
//NORMALISED DECISION MATRIX
Price Size Type Distance
Car1 = [0.36] , [0.43] , [1] , [0.51]
Car2 = [0.92] , [0.29] , [0] , [0.85]
Car3 = [0.14] , [0.86] , [0] , [0.17]
Now you have to compute the weighted normalised decision matrix. (I'm assuming you already assigned weights, if you didn't you can check AHP algorithm[5]).
// WEIGHTED NORMALISED DECISION MATRIX
Price Size Type Distance
Car1 = [0.07] , [0.04] , [0.3] , [0.20]
Car2 = [0.18] , [0.03] , [0] , [0.34]
Car3 = [0.03] , [0.09] , [0] , [0.07]
Weight = [0.20] , [0.10] , [0.30], [0.40]
TOPSIS algorithm is based on the idea that the most desirable alternative is the one that has the closest geometric distance to the ideal solution and the largest geometric distance to the anti-ideal solution.

We need to understand that there is some criteria that is a benefit and others that are costs. So, for instance, we might want to maximise size and type but minimise price and distance.
Based on that, let's compute the ideal and anti-ideal solution:
Price Size Type Distance
Car1 = [0.07] , [0.04] , [0.3] , [0.20]
Car2 = [0.18] , [0.03] , [0] , [0.34]
Car3 = [0.03] , [0.09] , [0] , [0.07]
Ideal = [0.03] , [0.09] , [0.3], [0.07]
-Ideal = [0.18] , [0.03] , [0] , [0.34]
Afterwards, for each car you have to calculate the euclidean distance with the ideal and anti ideal solution:
The formula is...

For instance, for the distance between car1 and the ideal solution would be ((0.07-0.03)**2 + (0.04-0.09)**2 + (0.3-0.3)**2 + (0.20-0.07)**2) ** 0.5
In python you can do that with Spicy Library. [6]
Once you calculate both distances to ideal and anti ideal solutions for each car alternative you have to compute the performance score which is basically a ratio.

So, for each car alternative, distance to i- / (distance to i- + distance to i+).
Once you get the performance score of each car alternative to sort them by descending order and you have their respective ranks.
Resources:
REFERENCES:
- 1 Zadeh, L. A. (1965). Fuzzy sets. Information and control, 8(3), 338-353.
- 2 Atanassov, K. T. (1983). Intuitionistic fuzzy sets, VII ITKR’s Session, Sofia deposed in Central Sci. Technical Library of Bulg. Acad. of Sci, 1697, 84.
- 3 Smarandache, F. (1995). Neutrosophic logic and set, mss.
- 4 Hwang, C. L., & Yoon, K. (1981). Methods for multiple attribute decision making. In Multiple attribute decision making (pp. 58-191). Springer, Berlin, Heidelberg.
- 5 Saaty, R. W. (1987). The analytic hierarchy process—what it is and how it is used. Mathematical Modelling, 9(3-5), 167.
doi:10.1016/0270-0255(87)90473-8