以前都是用冒泡排序和插入排序肴掷,這兩種排序時(shí)間復(fù)雜度都是O(n^2)敬锐,為了避免數(shù)據(jù)太大超時(shí),所以去學(xué)習(xí)了其他的排序方式呆瞻。
快速排序台夺,時(shí)間復(fù)雜度為O(nlogn),但是不穩(wěn)定痴脾。此排序運(yùn)用分治的思想颤介,基本思路就是以數(shù)組的第一個(gè)數(shù)為基準(zhǔn),將最左下標(biāo)和最右下標(biāo)賦給變量i和j赞赖,然后j從左往右尋找比基準(zhǔn)小的數(shù)滚朵,而i從左往右尋找比基準(zhǔn)大的數(shù),兩者找到一個(gè)后前域,進(jìn)行交換辕近,直到i=j。此時(shí)數(shù)組分為兩半匿垄,左邊是比基準(zhǔn)小的數(shù)字移宅,右邊是比基準(zhǔn)大的數(shù)字归粉,此時(shí)進(jìn)行遞歸操作,再次細(xì)分漏峰,最后完成數(shù)組排序糠悼。
代碼實(shí)現(xiàn):
1:給i,j賦值下標(biāo)并定義基準(zhǔn)
2:進(jìn)行循環(huán)操作浅乔,找到后半部分比基準(zhǔn)小的數(shù)倔喂,前半部分比基準(zhǔn)大的數(shù),必須保持i<j靖苇。找到后席噩,進(jìn)行交換。
3:循環(huán)完成時(shí)顾复,已經(jīng)遍歷完了整個(gè)數(shù)組班挖,完成了大數(shù)組的大小分類,將基準(zhǔn)數(shù)放到中間芯砸,再分別對(duì)前后部分遞歸。
完整代碼: