Faits :
A.
En janvier 2011, X._, née en 1976, a commencé à travailler au service du groupe Z._, à Londres. Dès mars 2012, elle a travaillé à Genève au sein de A.Z._ SA (ci-après: la banque). Le 24 juin 2012, elle a conclu avec la banque un contrat de travail de durée indéterminée, aux termes duquel elle était engagée en qualité de Senior Compliance Manager avec un salaire mensuel brut de 15'833 fr.
Assez rapidement, l'employée et sa supérieure hiérarchique directe, responsable du département compliance, ont fait part de leurs difficultés de communication à la directrice des ressources humaines. X._ se plaignait notamment de désaccords au sujet de l'organisation du travail et des priorités fixées, du langage fort utilisé à son égard, des compétences de manager de sa supérieure ainsi que de mobbing de la part de celle-ci. La directrice des ressources humaines a conseillé à l'employée de faire usage de la procédure interne de plainte.
Le 27 août 2012, X._ a déposé auprès de la banque une plainte contre sa supérieure hiérarchique. La banque a mis en oeuvre une enquête, confiée au chef des ressources humaines et à un avocat extérieur. Après audition des témoins désignés par les deux protagonistes, un rapport d'enquête a été établi le 12 novembre 2012. Il en ressort que le département compliance était désorganisé, en sous-effectif et sans orientation bien définie, que certaines critiques de l'employée étaient justifiées, que la pratique de gestion de la supérieure et sa communication n'étaient pas bonnes. Les témoins n'ont pas confirmé les reproches de victimisation et de mobbing élevés à l'encontre de la supérieure hiérarchique qui, selon l'employée, aurait personnellement attaqué des subordonnés, fait des remarques inappropriées ou des commentaires grossiers à leur égard; ils n'ont pas non plus confirmé que la supérieure aurait ouvertement critiqué, blâmé et humilié l'employée dans les réunions hebdomadaires. En revanche, les témoins ont déclaré que X._ pouvait se montrer grossière et agressive avec les collaborateurs sous sa responsabilité, élever la voix de manière choquante envers sa supérieure hiérarchique et avoir des réactions très vives lorsque les choses n'allaient pas dans son sens. En conclusion, les enquêteurs ont considéré qu'il n'était pas établi que l'employée avait été victime de mobbing de la part de sa supérieure hiérarchique. La banque a décidé de ne pas donner suite à la plainte.
Le 19 mars 2013, la banque a informé oralement X._ qu'elle était licenciée avec effet au 31 mai 2013 et qu'elle était libérée immédiatement de son obligation de travailler; le congé a été confirmé par courrier du même jour. Ce jour-là, la banque a également licencié la supérieure hiérarchique de l'employée.
B.
Le 4 avril 2014, X._ a ouvert action devant le Tribunal des prud'hommes du canton de Genève, concluant à ce que la banque soit condamnée à lui payer, à titre d'indemnité pour licenciement abusif, la somme de 96'378 fr. (correspondant à six mois de salaire), plus des intérêts moratoires. Elle soutenait avoir fait l'objet d'un harcèlement psychologique de la part de sa supérieure directe, mobbing encore renforcé à la suite du classement de sa plainte. Elle se disait convaincue d'avoir été licenciée uniquement parce qu'elle s'était plainte de sa supérieure hiérarchique et qu'elle avait fait valoir de bonne foi une prétention de protection résultant de l'<ref-law>; si sa plainte envers sa supérieure était réellement privée de fondement, la banque aurait alors dû déplacer l'une des deux protagonistes, afin qu'elles n'aient plus à travailler ensemble; en les licenciant les deux, la banque aurait démontré que la protection sollicitée était légitime.
La banque a conclu au rejet de l'action. Elle a allégué que le motif du licenciement résidait dans la perte de confiance dans les capacités humaines de l'employée à travailler en équipe, étant donné notamment ses problèmes relationnels tant avec sa hiérarchie qu'avec ses subordonnés; après le classement de sa plainte, ces problèmes se seraient du reste aggravés, l'employée agissant "comme un électron libre".
Le Tribunal des prud'hommes a notamment entendu onze témoins. Par jugement du 28 mai 2015, il a rejeté la demande. Il a considéré que le licenciement était motivé par l'attitude difficile de l'employée et non par le dépôt de la plainte, si bien qu'il ne saurait être qualifié d'abusif.
X._ s'est pourvue en appel. Par arrêt du 22 janvier 2016, la Chambre des prud'hommes de la Cour de justice du canton de Genève a confirmé le jugement de première instance. Elle a notamment retenu que le licenciement était intervenu en raison des manquements de l'employée relevés dans le rapport d'enquête et corroborés par les témoignages recueillis par le Tribunal des prud'hommes.
C.
X._ interjette un recours en matière civile. Elle conclut à ce que la banque soit condamnée à lui verser la somme nette de 48'189 fr. (correspondant à trois mois de salaire) avec intérêts à 5% dès le 31 mai 2013.
A.Z._ SA propose de déclarer le recours irrecevable, subsidiairement de le rejeter.

Considérant en droit :
1.
1.1. Le recours est dirigé contre une décision finale (<ref-law>) rendue en matière civile (<ref-law>) par un tribunal supérieur d'un canton, qui a statué sur recours (<ref-law>). La cause atteint la valeur litigieuse de 15'000 fr. ouvrant le recours en matière civile dans les affaires relevant du droit du travail (<ref-law>). Au surplus, le recours est exercé par la partie qui a succombé dans ses conclusions condamnatoires et qui a donc qualité pour recourir (<ref-law>); il a été déposé dans le délai (<ref-law>) et la forme (<ref-law>) prévus par la loi. Sous réserve de l'examen des griefs particuliers, le recours est recevable.
1.2. Le Tribunal fédéral statue sur la base des faits établis par l'autorité précédente (<ref-law>). Il ne peut rectifier ou compléter les constatations de l'autorité précédente que si elles sont manifestement inexactes ou découlent d'une violation du droit au sens de l'<ref-law> (<ref-law>). "Manifestement inexactes" signifie ici "arbitraires" (<ref-ruling> consid. 2 p. 117; <ref-ruling> consid. 1.5). Encore faut-il que la correction du vice soit susceptible d'influer sur le sort de la cause (<ref-law>).
La critique de l'état de fait retenu est soumise au principe strict de l'allégation énoncé par l'<ref-law> (<ref-ruling> consid. 2.3 p. 266 et les références). La partie qui entend attaquer les faits constatés par l'autorité précédente doit expliquer clairement et de manière circonstanciée en quoi ces conditions seraient réalisées (<ref-ruling> consid. 1.3.1 p. 18 et les références). Si elle souhaite obtenir un complètement de l'état de fait, elle doit aussi démontrer, par des renvois précis aux pièces du dossier, qu'elle a présenté aux autorités précédentes, en conformité avec les règles de la procédure, les faits juridiquement pertinents à cet égard et les moyens de preuve adéquats (<ref-ruling> consid. 2 p. 90). Si la critique ne satisfait pas à ces exigences, les allégations relatives à un état de fait qui s'écarterait de celui de la décision attaquée ne pourront pas être prises en considération (<ref-ruling> consid. 1.3.1 p. 18).
Le motif d'une résiliation est une question de fait (<ref-ruling> consid. 2.3 p. 515 et les arrêts cités). En l'espèce, l'autorité précédente a constaté que le licenciement n'était pas intervenu à cause de la plainte déposée par la recourante ni des relations difficiles de celle-ci avec sa supérieure hiérarchique, mais en raison des manquements de l'employée, qui pouvait se montrer grossière et agressive avec les collaborateurs sous sa responsabilité, élever la voix de manière choquante envers sa supérieure hiérarchique et avoir des réactions très vives lorsque les choses n'allaient pas dans son sens. Ces constatations de fait lient la cour de céans, faute pour la recourante d'en démontrer le caractère arbitraire. Les critiques formulées dans le recours seront dès lors examinées sur la seule base des faits retenus dans l'arrêt attaqué.
2.
La recourante se plaint d'une violation de l'<ref-law> faisant obligation à l'employeur de protéger la personnalité du travailleur. Elle reproche à l'intimée de n'avoir pris aucune mesure de réorganisation du département concerné, afin de mettre un terme à la confusion qui y régnait et chercher ainsi à aplanir le différend qui opposait l'employée à sa supérieure hiérarchique. Comme la banque aurait violé son obligation résultant de l'<ref-law>, le licenciement de la recourante serait abusif au sens de l'<ref-law>.
2.1. Le contrat de travail conclu pour une durée indéterminée peut être résilié par chacune des parties (<ref-law>). En droit suisse du travail prévaut la liberté de résiliation, de sorte que, pour être valable, un congé n'a en principe pas besoin de reposer sur un motif particulier. Le droit fondamental de chaque cocontractant de mettre unilatéralement fin au contrat est cependant limité par les dispositions sur le congé abusif (<ref-law>; <ref-ruling> consid. 2.3 p. 514; <ref-ruling> consid. 4.1 p. 538).
Est en particulier abusif le congé donné par une partie pour une raison inhérente à la personnalité de l'autre, à moins que cette raison n'ait un lien avec le rapport de travail ou ne porte sur un point essentiel un préjudice grave au travail dans l'entreprise (<ref-law>). Ainsi, s'il est établi qu'une situation conflictuelle sur le lieu du travail, due au caractère difficile d'un employé, nuit notablement au travail en commun dans l'entreprise, le congé donné à ce travailleur n'est pas abusif, à condition toutefois que l'employeur ait pris toutes les mesures que l'on pouvait attendre de lui pour désamorcer le conflit. Cette exigence repose sur le devoir de l'employeur de protéger et de respecter, dans les rapports de travail, la personnalité de ses travailleurs. L'abus réside alors dans le fait que l'employeur exploite la propre violation de ses devoirs contractuels. En effet, après avoir laissé une situation conflictuelle s'envenimer parmi ses salariés sans prendre les mesures adéquates pour l'atténuer, l'employeur se prévaut du fait que l'ambiance est devenue préjudiciable au travail dans l'entreprise pour licencier le salarié apparaissant, en raison de son caractère difficile, comme un fauteur de troubles. La question de savoir si l'employeur a pris les mesures nécessaires pour désamorcer le conflit avant d'en arriver à la résiliation relève du droit, car elle revient à examiner si l'employeur s'est conformé aux devoirs que lui impose l'<ref-law> (<ref-ruling> consid. 2.2 p. 117; <ref-ruling> consid. 2c p. 74; arrêt 4A_158/2010 du 22 juin 2010 consid. 3.2).
En application de ces principes, le Tribunal fédéral a admis le caractère abusif du licenciement d'un monteur en chauffage prononcé sans prévenir à quelques mois de l'âge de la retraite, après 44 ans de loyaux services, au motif que cet employé, comme d'autres, avait des difficultés relationnelles avec un cadre qui n'était pas son supérieur direct et qu'il avait, comme d'autres, une position critique envers des mesures de rationalisation introduites dans l'entreprise. La cour de céans a reproché à l'employeur de n'avoir pas fait la moindre tentative pour désamorcer les difficultés relationnelles, ce qui devait être possible puisque le cadre en question n'était pas le supérieur hiérarchique de l'employé; elle a observé en outre que le caractère licite des mesures de rationalisation litigieuses était discutable; enfin et surtout, la cour de céans a relevé le devoir d'assistance particulier de l'employeur envers un employé qui se trouve à quelques mois de la retraite et a travaillé 44 ans au service de la même entreprise en donnant satisfaction (<ref-ruling> consid. 5 p. 120 ss).
Dans une cause un peu plus récente, le Tribunal fédéral a nié le caractère abusif du licenciement d'une vendeuse intervenu à la suite de litiges avec des collègues. Dans le passé, l'employée licenciée avait déjà connu des tensions avec des collègues et elle était responsable de la mauvaise ambiance sur le lieu de travail. La cour de céans a jugé que l'employeur n'avait pas agi abusivement en résiliant le contrat de travail sans essayer, une nouvelle fois, d'arranger les choses (arrêt précité du 22 juin 2010 consid. 3.3).
2.2. La présente cause diverge du cas ayant donné lieu à l'<ref-ruling>. La recourante n'était pas une employée subalterne, mais occupait une position de cadre supérieur ( Senior Compliance Manager). Or, à ce niveau de responsabilité, des difficultés caractérielles sont particulièrement problématiques et peuvent engendrer des effets négatifs dans tout un secteur de l'entreprise. Par ailleurs, l'employée n'avait que 37 ans et était au service de l'intimée depuis moins d'une année.
La recourante était grossière et agressive avec les collaborateurs sous sa responsabilité et avait des réactions inappropriées lorsque les choses n'allaient pas dans son sens. Un tel comportement découle du caractère d'une personne. On ne discerne pas en quoi une réorganisation du département en cause, telle que préconisée par la recourante, aurait été susceptible d'influer sur le caractère de celle-ci.
L'intimée a réagi avec sérieux aux griefs de l'employée, en mandatant un avocat extérieur pour enquêter en compagnie du chef des ressources humaines. Sur le vu des conclusions du rapport niant le mobbing invoqué par la recourante, mais retenant un comportement grossier et agressif de sa part envers les collaborateurs sous sa responsabilité, la décision de l'intimée de licencier l'employée ne prête pas le flanc à la critique. Du reste, on peut se demander si ce licenciement ne s'imposait pas afin même de protéger la personnalité des subordonnés de la recourante. Quant aux motifs du congé signifié à la supérieure de l'employée, ils sont dénués de pertinence pour juger du caractère abusif ou non du licenciement ici en cause.
En conclusion, la cour cantonale n'a pas violé le droit fédéral en refusant de qualifier d'abusif le licenciement de la recourante.
3.
Le recours doit être rejeté dans la mesure où il est recevable.
Par conséquent, la recourante prendra à sa charge les frais judiciaires (<ref-law>), dont le montant ne sera pas fixé en application de l'art. 65 al. 4 let. c LTF puisque la valeur litigieuse dépasse 30'000 fr. En outre, la recourante versera des dépens à l'intimée (art. 68 al. 1 et 2 LTF).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté dans la mesure où il est recevable.
2.
Les frais judiciaires, arrêtés à 2'000 fr., sont mis à la charge de la recourante.
3.
La recourante versera à l'intimée une indemnité de 2'500 fr. à titre de dépens.
4.
Le présent arrêt est communiqué aux mandataires des parties et à la Chambre des prud'hommes de la Cour de justice du canton de Genève.
Lausanne, le 25 août 2016
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente : Kiss
La Greffière : Godat Zimmermann