Kruskal's algorithm finds a minimum spanning tree by sorting the edges by weight and then iterating through each edge, adding it to the spanning tree if it does not form a cycle. It uses a disjoint-set union find data structure to check for cycles in O(E log V) time, resulting in an overall runtime of O(E log E). The algorithm puts edges in a min-heap based on their weights and iterates through them, adding each edge to the output if its endpoints are in different sets in the disjoint-set union find structure.