上篇博客我們主要聊了比較高效的歸并排序算法,本篇博客我們就來介紹另一種高效的排序算法:快速排序。快速排序的思想與歸并排序類似,都是采用分而治之的方式進(jìn)行排序的。快速排序的思想主要是取出無序序列中第一個(gè)值,然后通過比較將比該值小的元素放到該值的前方,將比該值大的元素放在該值的后方。這樣一來該值前方的數(shù)據(jù)都要比該值小,該值后方的數(shù)據(jù)都要比該值大。然后再次對(duì)前半部分和后邊半部分無序的數(shù)列進(jìn)行上述操作,這樣不斷的操作,無序的序列的規(guī)模不斷被縮小。等問題的規(guī)模被縮小到一定程度后,我們的序列就變的有序了。
之前我們說過,當(dāng)一個(gè)問題可以被分成一些相同的子問題時(shí),我們就可以使用遞歸來操作。所以在快速排序的過程中,我們是通過遞歸的方式將問題規(guī)模逐漸減小,知道序列為序?yàn)橹?。本篇博客將?huì)給出這一過程,根據(jù)示意圖,給出相應(yīng)的代碼實(shí)現(xiàn)。
一、將無序數(shù)組進(jìn)行拆分
在本篇博客,我們先聊一聊如果將大的問題拆分成一些相同的子問題。我們需要對(duì)需要排序的數(shù)組進(jìn)行拆分,從無序序列中取出一個(gè)值,然后通過比較,將比該值大的放在該值的后方,比該值小的,放在該值的前方。本部分,我們將給出相應(yīng)的示意圖以及代碼實(shí)現(xiàn)。