python實現快排

2021-08-09 22:47:54 字數 1042 閱讀 8488

學習python,隨便寫了下快排,**如下:

# -*- coding:utf-8 -*-

# 快速排序演算法實現

import sys

sys.setrecursionlimit(1000000) #設定最大遞迴深度,這裡設定為一百萬

def kuaipai(ii, jj, data_list):

global s; s += 1; # 記錄遞迴的深度

i = ii; j = jj;

if i == j:

return;

l = 1; # 記錄判定交替i,j

while j != i:

if data_list[i] > data_list[j]:

k = data_list[i];

data_list[i] = data_list[j];

data_list[j] = k;

if l == 0:

j -= 1;

l = 1;

else:

i += 1;

l = 0;

else:

if l == 1:

j -= 1;

else:

i += 1;

if ii < i:

kuaipai(ii, i - 1, data_list);

if j < jj:

kuaipai(j + 1, jj, data_list);

return;

global s; # 儲存遞迴次數

#data = raw_input(); # 輸入資料,逗號隔開

#data_list = data.split(','); # 分割字串為list

s = 0;

data_list = range(1000, 0, -1);

n = len(data_list); # 計算列表長度

kuaipai(0, n - 1, data_list);

print s;

print data_list;

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...

快排 Python實現

同氣泡排序 上篇博文 一樣,快速排序也屬於交換排序,通過元素之間的比較與交換位置來達到排序的目的。不同的是,氣泡排序在每一輪中只是把1個元素冒泡到陣列的一端,而快速排序是 每一輪挑選乙個基準元素,讓比基準元素大的元素移動到陣列的一邊,比基準元素小的移動到陣列的另外一端,從而把陣列拆解成兩部分。舉例說...

Python 實現快排 堆排

原理 公升序 選取陣列的首個元素做為中間值,快取這個中間值,該位置變為空 從右到左和中間值對比,找到第乙個小於中間值的元素,把該值放到左邊的空位,該位置變為空 從左到右和中間值對比,找到第乙個大於中間值的元素,把該值放到右邊的空位,該位置變為空 重複步驟2和3,直到左右空位相交,然後把快取的中間值填...