排序算法C語言版快速排序_第1頁
排序算法C語言版快速排序_第2頁
排序算法C語言版快速排序_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、快速排序算法思想簡單描述:快速排序是對冒泡排序的一種本質(zhì)改進(jìn)。它的基本思想是通過一趟掃描后,使得排序序列的長度能大幅度地減少。在冒泡排序中,一次掃描只能確保最大數(shù)值的數(shù)移到正確位置,而待排序序列的長度可能只減少1??焖倥判蛲ㄟ^一趟掃描,就能確保某個(gè)數(shù)(以它為基準(zhǔn)點(diǎn)吧)的左邊各數(shù)都比它小,右邊各數(shù)都比它大。然后又用同樣的方法處理它左右兩邊的數(shù),直到基準(zhǔn)點(diǎn)的左右只有一個(gè)元素為止。它是由于1962年提出的。顯然快速排序可以用遞歸實(shí)現(xiàn),當(dāng)然也可以用?;膺f歸實(shí)現(xiàn)。下面的函數(shù)是用遞歸實(shí)現(xiàn)的,有興趣的朋友可以改成非遞歸的??焖倥判蚴遣环€(wěn)定的。最理想情況算法時(shí)間復(fù)雜度O(nlog2n),最壞O(n2)算法實(shí)

2、現(xiàn):/*功能:快速排序輸入:數(shù)組名稱(也就是數(shù)組首地址)、數(shù)組中元素個(gè)數(shù)*/void quick_sort(int *x, int low, int high)int i, j, t;if (low < high) /*要排序的元素起止下標(biāo),保證小的放在左邊,大的放在右邊。這里以下標(biāo)為low的元素為基準(zhǔn)點(diǎn)*/ i = low; j = high; t = *(x+low); /*暫存基準(zhǔn)點(diǎn)的數(shù)*/ while (i<j) /*循環(huán)掃描*/ while (i<j && *(x+j)>t) /*在右邊的只要比基準(zhǔn)點(diǎn)大仍放在右邊*/ j-; /*前移一個(gè)位置*

3、/ if (i<j) *(x+i) = *(x+j); /*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)小的數(shù),替換基準(zhǔn)點(diǎn)的數(shù)*/ i+; /*后移一個(gè)位置,并以此為基準(zhǔn)點(diǎn)*/ while (i<j && *(x+i)<=t) /*在左邊的只要小于等于基準(zhǔn)點(diǎn)仍放在左邊*/ i+; /*后移一個(gè)位置*/ if (i<j) *(x+j) = *(x+i); /*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)大的數(shù),放到右邊*/ j-; /*前移一個(gè)位置*/ *(x+i) = t; /*一遍掃描完后,放到適當(dāng)位置*/ quick_sort(x,low,i-1); /*對基準(zhǔn)點(diǎn)左邊的數(shù)再執(zhí)行快速排

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論