my question is simply What if a malicious owns more than half of the nodes in bitcoin network? she can simply fraud then. isn't there any algorithm to prevent someone from having more than half of nodes in bitcoin network?
No. The 51% hack is considered one of the main ways a hacker could control the network. However, it is almost completely implausible because of the sheer amount of power that would be required to have 51%. For example, the total hash rate of the network is currently 6.09 Exahashes per second. So, if a hacker wanted to take control of the network, he would need to buy about 6.1 Exahashes per second of hash power. An antminer S9, for 3,000 dollars, gives you 14 terrahashes per second. Thus, the supposed hacker would need to buy 435,000 Antminer S9's which would cost 1.305 billion. That's not even considering the growth rate of the network and the sheer amount of space and energy required to host all of those Antminers.
In verifying transactions, it is not the number of nodes that an attacker owns, but the hashing power which matters. Having many bad nodes (Sybil attack) could affect the network in other ways such as not relaying all transactions, etc, but you can't trick an honest node into accepting a different blockchain without mining enough blocks for it to become the largest chain in the network, and that requires more than 51% of the hashing power to race against the rest of the network.