+4  A: 

There are sweep methods which can determine this much faster than a brute force approach. In addition, they can be used to break a non-simple polygon into multiple simple polygons.

For details, see this article, in particular, this code to test for a simple polygon.

Reed Copsey
+1  A: 

See Bentley Ottmann Algorithm for a sweep based O(N log N) method for this.

Amit Prakash