[HackerRank]演算法的執行時間(Running Time of Algorithms)

題目描述

插入排序法在排序排序過的龐大陣列時,會需要很多時間。為了瞭解究竟是什麼原因所造成的,我們需要分析一下執行時間。輸入一個未排序的陣列,請輸出使用插入排序法將這個陣列排列好的話,會需要移動幾次元素。

原題網址

https://www.hackerrank.com/challenges/runningtime

輸入格式

輸入有兩行,第一行為陣列的大小,範圍在1到1001之間(包含1和1001)。第二行為陣列的所有元素,用空格字元分隔,範圍在-10000到10000之間(包含-10000和10000)。

輸出格式

輸出使用插入排序法將這個陣列排列好的話,會需要移動幾次元素。

範例輸入

5
2 1 3 1 2

範例輸出

4

額外解釋

第一個「1」需要往左移動一次,此時陣列如下:

1 2 3 1 2

第二個「1」需要往左移動兩次,此時陣列如下:

1 1 2 3 2

最尾端的「2」需要往左移動一次,此時陣列如下:

1 1 2 2 3

所以元素總共移動4次。

解題概念

有關於插入排序法的介紹可以參考以下這篇文章:

https://magiclen.org/sorting-algorithm/

在位移的時候,另外使用一個變數來記錄位移的次數,排序完成後輸出記下的位移次數。

參考答案

關於作者

Magic Len

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章