国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java & Js & Python 快速排序(2020年8月31日)

2021-03-21 13:44 作者:阿-岳同學(xué)  | 我要投稿

學(xué)習(xí)背景

大二上學(xué)期剛開學(xué),學(xué)習(xí)了一點(diǎn)算法。參考著《數(shù)據(jù)解構(gòu)》上C語言版的快速排序算法,經(jīng)過理解記憶和練習(xí),默寫java、js、python版的快速排序。

源代碼

Java

JavaScript

Python


def partition(array, low, high):
??? """
??? 快速排序中用到的分割函數(shù):
??? 重新排序數(shù)列,所有比基準(zhǔn)值小的元素擺放在基準(zhǔn)前面,
??? 所有比基準(zhǔn)值大的元素擺在基準(zhǔn)后面(與基準(zhǔn)值相等的數(shù)可以到任何一邊)。
??? 在這個分割結(jié)束之后,對基準(zhǔn)值的排序就已經(jīng)完成;
??? @:param array 傳入的數(shù)組,一小段
??? @:param low 最小索引
??? @:param high 最大索引
??? @:return 一步分割后的基準(zhǔn)值下標(biāo)
??? """
??? i = low? # 最小元素索引
??? # j 遍歷 [low, high),high 是基準(zhǔn)值的下標(biāo),所以不包含 high
??? for j in range(low, high):
??????? # 當(dāng)元素小于或者等于基準(zhǔn)值 array[high]
??????? if array[j] < array[high]:
??????????? # 交換下標(biāo) i 和 j 的位置
??????????? if i != j:
??????????????? array[i], array[j] = array[j], array[i]
??????????? i += 1
??? # 交換位置
??? array[i], array[high] = array[high], array[i]
??? return i


def quick_sort(array, low, high):
??? """
??? 快速排序
??? 該函數(shù)直接修改了數(shù)組的狀態(tài)
??? :param array: 排序數(shù)組
??? :param low: 起始索引
??? :param high: 結(jié)束索引
??? """
??? if low <= high:
??????? pi = partition(array, low, high)
??????? quick_sort(array, low, pi - 1)? # 對前半部分排序
??????? quick_sort(array, pi + 1, high)? # 對后半部分排序


if __name__ == '__main__':
??? arrayList = []
??? for num in range(100000):
??????? arrayList.append(uniform(0, 100))

??? t1 = time()
??? quick_sort(arrayList, 0, len(arrayList) - 1)
??? t2 = time()
??? print(t2 - t1)
??? pass


Java & Js & Python 快速排序(2020年8月31日)的評論 (共 條)

分享到微博請遵守國家法律
定西市| 南川市| 余干县| 襄樊市| 丘北县| 阳江市| 会昌县| 梅河口市| 井陉县| 霞浦县| 溧水县| 大厂| 襄樊市| 札达县| 阜康市| 仙桃市| 顺平县| 博白县| 呼和浩特市| 全椒县| 宜兴市| 揭西县| 罗源县| 隆尧县| 罗甸县| 正蓝旗| 云霄县| 绿春县| 郸城县| 龙泉市| 攀枝花市| 哈密市| 永仁县| 达州市| 和林格尔县| 五大连池市| 阜新市| 泗洪县| 许昌县| 通辽市| 西昌市|