Abstract: In distributed sensor networks, a large number of small sensors are deployed to create a network which cooperates together to set up a sensing network. To design applications and protocols for sensor networks, the maximum network lifetime and minimum energy consumption should be considered as important parameters. This study presented a distributed clustering algorithm where cluster heads are elected following a two-way message exchange between each sensor and its corresponding neighbors. Sensors eligibility to be elected cluster head is based on some parameters such as energy, centrality, density, in addition distances between nodes and the sink. The main goal of our clustering algorithm is to distribute the energy load among all sensor nodes to reduce the energy consumption and increase the network lifetime of wireless sensor networks. The proposed algorithm, in the worse case, has an algorithmic complexity of O (N) at each sensor node.