{"id":2424,"date":"2019-12-21T10:27:33","date_gmt":"2019-12-21T07:27:33","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2424"},"modified":"2024-12-16T22:32:31","modified_gmt":"2024-12-16T19:32:31","slug":"lexicompare","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/pt\/2019\/12\/21\/lexicompare\/","title":{"rendered":"Algoritmo de compara\u00e7\u00e3o lexicogr\u00e1fica"},"content":{"rendered":"<p>O algoritmo lexicogr\u00e1fico de compara\u00e7\u00e3o de strings funciona de maneira muito simples; os c\u00f3digos dos caracteres s\u00e3o comparados em um loop e o resultado \u00e9 retornado se os caracteres n\u00e3o forem iguais.<\/p>\n<p>Um exemplo para a linguagem C pode ser encontrado aqui:<br \/><a href=\"https:\/\/github.com\/gcc-mirror\/gcc\/blob\/master\/libiberty\/memcmp.c\">https:\/\/github.com\/gcc-mirror\/gcc\/blob\/master\/libiberty\/memcmp.c<\/a><\/p>\n<p>Deve-se levar em considera\u00e7\u00e3o que voc\u00ea precisa comparar caracteres em uma \u00fanica codifica\u00e7\u00e3o est\u00e1tica, por exemplo em Swift usei compara\u00e7\u00e3o caractere por caractere em UTF-32. A op\u00e7\u00e3o de classifica\u00e7\u00e3o de array usando memcmp funcionar\u00e1 exatamente para caracteres de byte \u00fanico; em outros casos (codifica\u00e7\u00f5es de comprimento vari\u00e1vel) a ordem pode estar incorreta. N\u00e3o descarto a possibilidade de implementa\u00e7\u00e3o baseada em codifica\u00e7\u00f5es de comprimento vari\u00e1vel, mas provavelmente ser\u00e1 uma ordem de magnitude mais complicada.<\/p>\n<p>A complexidade de tempo do algoritmo \u00e9 O(1) no melhor caso, O(n) no m\u00e9dio e no pior caso<\/p>\n<h3>Fontes<\/h3>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/Lexicographic_order\" target=\"_blank\" rel=\"noopener\">https:\/\/ru.wikipedia.org\/wiki\/Lexicographic_order<\/a> <\/p>\n<h3>Fontes<\/h3>\n<p><a href=\"https:\/\/gitlab.com\/demensdeum\/algorithms\/blob\/master\/lexiCompare\/lexiCompare.swift\" target=\"_blank\" rel=\"noopener\">https:\/\/gitlab.com\/demensdeum \/algoritmos\/blob\/master\/lexiCompare\/lexiCompare.swift<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O algoritmo lexicogr\u00e1fico de compara\u00e7\u00e3o de strings funciona de maneira muito simples; os c\u00f3digos dos caracteres s\u00e3o comparados em um loop e o resultado \u00e9 retornado se os caracteres n\u00e3o forem iguais. Um exemplo para a linguagem C pode ser encontrado aqui:https:\/\/github.com\/gcc-mirror\/gcc\/blob\/master\/libiberty\/memcmp.c Deve-se levar em considera\u00e7\u00e3o que voc\u00ea precisa comparar caracteres em uma \u00fanica codifica\u00e7\u00e3o<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/pt\/2019\/12\/21\/lexicompare\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Algoritmo de compara\u00e7\u00e3o lexicogr\u00e1fica&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[131,135],"class_list":["post-2424","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-algorithms","tag-lexicompare","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"pt","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2424"}],"version-history":[{"count":13,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2424\/revisions"}],"predecessor-version":[{"id":3929,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2424\/revisions\/3929"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}