The only algorithm I know for updation of weights of a neural network is based on gradients. The update equation can be roughly written as
$$w \leftarrow w - \nabla_{w}L$$
where $\nabla_{w}L$ is the gradient of loss function with respect to weights.
Are there any learning algorithms for updating weights in neural networks that does not use gradients?