這篇文章運(yùn)用簡(jiǎn)單易懂的例子給大家介紹C語(yǔ)言中快速排序法如何使用,代碼非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
成都創(chuàng)新互聯(lián)公司是一家成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,提供網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,建網(wǎng)站,按需求定制開(kāi)發(fā),網(wǎng)站開(kāi)發(fā)公司,從2013年開(kāi)始是互聯(lián)行業(yè)建設(shè)者,服務(wù)者。以提升客戶品牌價(jià)值為核心業(yè)務(wù),全程參與項(xiàng)目的網(wǎng)站策劃設(shè)計(jì)制作,前端開(kāi)發(fā),后臺(tái)程序制作以及后期項(xiàng)目運(yùn)營(yíng)并提出專業(yè)建議和思路。快速排序法的排法:首先每次排序的時(shí)候設(shè)置一個(gè)基準(zhǔn)點(diǎn),將小于等于基準(zhǔn)點(diǎn)的數(shù)全部放到基準(zhǔn)點(diǎn)的左邊;然后將大于等于基準(zhǔn)點(diǎn)的數(shù)全部放到基準(zhǔn)點(diǎn)的右邊;最后在每次交換的時(shí)候就不會(huì)像冒泡排序一樣每次只能在相鄰的數(shù)之間進(jìn)行交換,交換的距離就大的多了。
快速排序法的排法:
算法思想:
(1) 我們從待排序的記錄序列中選取一個(gè)記錄(通常第一個(gè))作為基準(zhǔn)元素(稱為key)key=arr[left],然后設(shè)置兩個(gè)變量,left指向數(shù)列的最左部,right指向數(shù)據(jù)的最右部。
(2) key首先與arr[right]進(jìn)行比較,如果arr[right]<key,則arr[left]=arr[right]將這個(gè)比key小的數(shù)放到左邊去,如果arr[right]>key則我們只需要將right--,right--之后,再拿arr[right]與key進(jìn)行比較,直到arr[right]<key交換元素為止。
(3) 如果右邊存在arr[right]<key的情況,將arr[left]=arr[right],接下來(lái),將轉(zhuǎn)向left端,拿arr[left ]與key進(jìn)行比較,如果arr[left]>key,則將arr[right]=arr[left],如果arr[left]<key,則只需要將left++,然后再進(jìn)行arr[left]與key的比較。
(4) 然后再移動(dòng)right重復(fù)上述步驟
(5) 最后得到 {23 58 13 10 57 62} 65 {106 78 95 85},再對(duì)左子數(shù)列與右子數(shù)列進(jìn)行同樣的操作。最終得到一個(gè)有序的數(shù)列。
算法實(shí)現(xiàn):
public class QuickSort { public static void quickSort(int [] arr,int left,int right) { int pivot=0; if(left<right) { pivot=partition(arr,left,right); quickSort(arr,left,pivot-1); quickSort(arr,pivot+1,right); } } private static int partition(int[] arr,int left,int right) { int key=arr[left]; while(left<right) { while(left<right && arr[right]>=key) { right--; } arr[left]=arr[right]; while(left<right && arr[left]<=key) { left++; } arr[right]=arr[left]; } arr[left]=key; return left; } public static void main(String[] args) { int arr[]= {65,58,95,10,57,62,13,106,78,23,85}; System.out.println("排序前:"+Arrays.toString(arr)); quickSort(arr,0,arr.length-1); System.out.println("排序后:"+Arrays.toString(arr)); } }
排序前:[65, 58, 95, 10, 57, 62, 13, 106, 78, 23, 85] 排序后:[10, 13, 23, 57, 58, 62, 65, 78, 85, 95, 106]
關(guān)于C語(yǔ)言中快速排序法如何使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。
文章名稱:C語(yǔ)言中快速排序法如何使用-創(chuàng)新互聯(lián)
網(wǎng)站路徑:http://jinyejixie.com/article46/icjeg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司、響應(yīng)式網(wǎng)站、網(wǎng)站改版、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容