I learn algorithms as if I am learning to play the guitar - repetition after repetition.
Then you do not learn algorithms. You learn repetition. Two different things. Using a programming language in an algorithm book is a secondary factor. This is just a learning tool, a detail of implementation.
What you need to focus on is understanding the structure, logic, and mathematical characteristics of the algorithm (and possibly the data structure associated with it).
What you need to do.
But by doing this, I feel like I'm being fixed more, that I can only implement them in java.
But this is because you focus only on how the algorithm is encoded (in Java in this particular case). You focus on implementation details.
When you learn to drive, you do not focus on how you learn to drive a Honda Civic or Nissan Maxima. You will learn the essence of what driving is, the rules of the thumb, the necessary precautions and laws governing driving.
Same thing with learning algorithms. You don't learn “Algorithms in Java” any more than “Algorithms in Haskell”. You learn Algorithms in the first place, the vehicle (without special cases) is secondary.
You should focus on what the algorithm does, how and why. Questions like "how / why does it work?" and most importantly * “what are the performance characteristics?” these are the things you should focus on.
Every good book of algorithms (including Sedgewick) carries this message. This is what you should focus on. How do you get to such a reorientation that the function of one personal learning strategy.
How exactly do you recognize the algorithms if the book you use is language dependent?
Without focusing on the language. Focus on the structure, focus on the data structures involved, invariants, preconditions and post-conditions. Understand the asymptotic behavior described in the notation Big-O (or Big-Omicron), Little-O / Little-Omicron, and Omega.
You learn algorithms, not program in Java using coding algorithms.
If you cannot make this mental leap, it means that you do not have enough practice or abstract analysis. This is not an insult, but observation and advice. Coding, the use of a programming language, as a rule, is secondary to the mathematical analysis of calculations, the focus of computer science (of which Algorithms are part of it).
NOTE I have been in Java for over 10 years, and although I enjoy working, I strongly believe that this is a bad tool for learning programming or CS topics.
It is best to use algorithms with A) a procedural programming language at the system level, such as C or Ada, or a high-level pseudo-assembler simulator, or B) a functional language such as Lisp or Haskell.
Object oriented functions in pure / pseudo pure OO languages just get in the way.
Algorithms are mathematical structures with a character that describes how (operatively) and / or what (mathematically). The former is ideal for procedural programming, later for functional programming.