摘要:代碼片段語言組織能力有限,直接上代碼排序算法之快速排序參數(shù)為需要排序的數(shù)組參數(shù)為數(shù)組的起始下角標即參數(shù)為數(shù)組的最后下角標即經(jīng)過一輪排序,已經(jīng)將數(shù)組分為左右兩部分進行遞歸排序總結(jié)快速排序的精髓在于分治思想,分而治之,它的時間復雜度為。
算法簡述
所謂快速排序算法是基于交換排序和遞歸思想的,它的速度的確如名字所示——快!并且這種一算一般被用作數(shù)量級比較大的數(shù)據(jù)當中,在大數(shù)據(jù)中有著很重要的地位。
算法流程下面是快速排序算法的流程:
1、首先設(shè)定一個分界值(一般都是取中間或者第一個數(shù)),通過該分界值將數(shù)組分成左右兩部分; 2、將數(shù)組中大于等于分界值的數(shù)值放在分界值的右邊,將數(shù)組中小于等于分界值的數(shù)值放在分界值的左邊;
3、然后左右兩邊的數(shù)組又可以按照這個方式進行獨立排序;
4、重復這個過程,可以看出這是一種遞歸的思想,當遞歸到最后,整個數(shù)組也就排序完成;
下面通過一個例子來講解一下:對數(shù)組int[] arr = {34,25,65,33,16,78,43,22}進行快速排序
取33為分界值,用i,j兩個引用從兩端進行遍歷,i從左邊依次遍歷直到找出比33大的數(shù)34(即arr[0]),j從右依次遍歷直至找到比33小的數(shù)22(即arr[7])交換這兩個數(shù)的位置:
{22,25,65,33,16,78,43,34}
然后i向右移,j向左移進行遍歷,經(jīng)過一輪后:{22,25,16,33,65,78,43,34}
接下來通過遞歸調(diào)用,將左右數(shù)組進行排序。
代碼片段語言組織能力有限,直接上代碼:
/** * 排序算法之快速排序 * 參數(shù)arr為需要排序的數(shù)組 * 參數(shù)left為數(shù)組的起始下角標即0 * 參數(shù)right為數(shù)組的最后下角標即arr.length-1 */ private void quickSort(int[] arr,int left,int right) { int f,t; int rtemp,ltemp; ltemp = left; rtemp = right; f = arr[(left+right)/2]; //經(jīng)過一輪排序,已經(jīng)將數(shù)組分為左右兩部分 while(ltempf) { --rtemp; } if(ltemp<=rtemp) { t = arr[ltemp]; arr[ltemp] = arr[rtemp]; arr[rtemp] = t; --rtemp; ++ltemp; } } if(ltemp == rtemp) { ltemp++; } //進行遞歸排序 if(left 總結(jié) 快速排序的精髓在于分治思想,分而治之,它的時間復雜度為O(nlog2n)。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64400.html
摘要:接下來我來說明快速排序的思路以及實現(xiàn)的代碼??焖倥判蛩悸肥紫仁嵌x一個變量,把數(shù)組的第一個元素的值賦給,然后定義兩個變量指向數(shù)組的第一個元素和最后一個元素。 今天突然想寫個排序,以前寫過,然后寫了之后一直出錯,然后自己百度了一下,看了別人寫的方法,自己也嘗試著寫了一個。接下來我來說明快速排序的思路以及實現(xiàn)的代碼。 快速排序思路:首先是定義一個變量key,把數(shù)組的第一個元素的值賦給key...
摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
摘要:常見的內(nèi)部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數(shù)排序等。插入排序在實現(xiàn)上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內(nèi)部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數(shù)排序等。用一張圖概括: showImg(https://segm...
閱讀 1816·2021-11-25 09:43
閱讀 15528·2021-09-22 15:11
閱讀 2658·2019-08-30 13:19
閱讀 2039·2019-08-30 12:54
閱讀 1847·2019-08-29 13:06
閱讀 972·2019-08-26 14:07
閱讀 1638·2019-08-26 10:47
閱讀 3063·2019-08-26 10:41