Category Archives: Techniques

Sort by moving elements to start or end with fewest moves

Getting started

You may be familiar with quick-sort, but when you stumble across this problem, it turns out to be a lot more complex. Since you need to determine the method that involves the fewest moves possible, you will have to take another approach. The given problem can be re-stated into this problem:

Problem statement

Hien is the class monitor and he wants his classmates to form a line, in which the height of every students is in ascending order. He needs to form that line by moving his classmates from the line to the start or end of it and it has to be a quick process, since Hien is very lazy and needs to play Age Of Empires right away. Write an algorithm to help him.

Input format

First line: n.

Second line: numbers indicating the height of every student in the class, each seperated by a space.


n ≤ 100; H[i] ≤ 100000 (H[i] is the height of an individual).

Output format

An integer indicating the fewest moves possible.

Sample input


2 1 3 5

Sample output



The student with height 1 is moved to the start of the line.

Let’s not pay attention to the ‘fewest moves’ for a while. Normally, when you see these types of ‘moving’ elements to start or end of an array, you can take a look at a basic approach.

Let’s take the Sample input as an example. With the basic approach, we search for the smallest element in the array, which is now 1. After that, we move it to the far right of the array. Then, we search for the next smallest element, which is 2, and we keep doing it until 5 is moved to the far right of the array. We come to the conclusion that for this approach, the number of moves that are taken is exactly equal to the number of elements present in the array itself. But let’s have a closer look. We can see that 2, 3 and 5 are contiguous, meaning that the relative order between them is not changed at all when sorting is completed. So, we can know that in the required algorithm, we need to conserve the order of contiguous integers. That is when std::pair comes to use.

Basic approach illustration

What is std::pair, exactly?

Std::pair is a pre-defined class in C++. A pair element is consisted of 2 other sub-elements, which can be classified as first and second. In the algorithm we are searching for, as stated earlier, we can utilise std::pair to get the job done by assigning the input elements to first and its index to second.

Get the job done

After that, quick-sort comes in handy. We then use it to sort the array in ascending order. Because std::pair is used, when sorting the elements, each index is carried along with the data. Then, we can just compare the indexes of every subsequent element. Job done!

Final approach illustration

Source code (C++)

List of free stock photos – Update 2019

A well-picked picture can play an important role to a blogpost or a document in general. However, the search for a good one requires effort (taking photos yourself, finding a good one on the internet) or money (stock market). Fortunately, there are free websites and nice people who are willing to provide their photos for free (or almost free), here is the update list of 2019 which I’m currently using: Continue reading List of free stock photos – Update 2019

Search in Windows

To be short: Searching files in Windows sucks.

I don’t understand why such a supposed-to-be-simple utility is poorly built in Windows system. I was hyped when upgrading from XP to 7, and 7 to 8, and 8 to 10. In the end, the feeling I have is disappointment.

At the beginning, when a fresh system is installed, everything seems smooth. Understandable! Reasons: Not many things to search, indexing is not a heavy job, and computer resource still has lots of room for software to run. Continue reading Search in Windows

Justify text automatically in wordpress blogpost

The new Gutenberg editor provided by WordPress is pretty neat. However, there are certain limits of the ability to align text as what we usually do in Microsoft Word, especially the nice-looking “justified text”.

In earlier version of the editor, we can open the extended editing bar and there would be a Justified Alignment option to click and apply on the paragraph. The current one doesn’t have it. To resolve this problem, there are several options: install the old editor plugin (which will be supported till 2022), or simply put the CSS code in the Additonal CSS section of the current theme setting:

p {text-align:justify}

Then all the paragraphs from now on will be formatted as Justified.

Abbreviations in daily business emails

In our daily work context, regardless of our industry or expertise, most of us will need to use emails for professional communication. The headache sometimes comes when we receive an email with what-the-heck-is-that abbreviations that no one taught at schools or no senior colleagues trained us. The list provided below comprises only some frequent text we may catch at work, excluding the terminologies as there would be plenty of them depending on different industries / sectors / business functions.

Continue reading Abbreviations in daily business emails

Từ LaTeX sang Word/PPT/Illustrator…

LaTeX là ngôn ngữ soạn thảo được nhiều người, đặc biệt là dân có ‘động chạm’ đến toán, thích và sử dụng. LaTeX mạnh hơn Word ở chỗ công thức toán có thể cho vào văn bản một cách đơn giản và đẹp (đẹp hơn Equation và MathType nhiều!) và làm việc ở môi trường nào cũng được: windows, linux, OSX….

Đó là để giới thiệu cho những người chưa biết Latex là gì, còn khi ai đó đã tìm đến câu hỏi ở đề bài thì dưới đây sẽ đi thẳng vào vấn đề luôn.

Continue reading Từ LaTeX sang Word/PPT/Illustrator…

The Best Programming Languages

Five of the Best Programming Languages and Frameworks for a Small Business

Choosing a programming framework for a small business can be overwhelming- there are so many. Here are a few of the best choices, to help you get started.

Ask a room of ten developers which programming framework is the ‘best on the market,’ and you’re liable to receive ten different answers. Each developer will sing the praises of a different language, and each one will very probably feel that theirs is the only logical choice. The most confusing thing, though? Each and every one of those developers will be correct.

Continue reading The Best Programming Languages

Excel and Python? Yes: xlwings

Some of us in academic worlds still stick with Excel when visualizing data. I don’t blame them. In my first year of PhD student, I had used Excel for some of my presentations. Why? Because I use Windows, because it’s quick, and because it’s a good companion with Powerpoint and Word. Even now in my life of a researcher, sometimes explaining something to someone by datamining using Excel is a quick way: the learning curve for excel plotting is simple: click drag, choose and voilà.

Continue reading Excel and Python? Yes: xlwings

Things to do in your free time


You’re not really free in this busy life, but there’s certain moment you don’t want to work and want to replace them (your heavy works!) with something fun. Here are they:

  1. Drawing/doodling:
    Drawing is making your right brain work. In that way, this act will boost your creativity and imagination, things would be lacking during your working time. Also, what you achieve at the end (a cute cat, for example) can be used for decoration purpose. Two birds one stone. Continue reading Things to do in your free time