python php 快速排序

2022-06-11 11:06:13 字數 1804 閱讀 6602

#!/usr/bin/python

#coding=utf-8

def partition(li,left,rigth):

temp = li[left] #獲取第乙個值假定為列表的中間值

while left < rigth: # 如果中間值的左邊小於右邊 則說明比較的值左邊為空 則將值復還結束演算法

while left < rigth and temp <= li[rigth]: #從列表結尾開始迴圈比較右邊的值

rigth -= 1 #依次向左進一步

li[left] = li[rigth] #將找到的值直接寫到列表最開始(左邊) 因為temp <= li[rigth] 所以會出現 兩個值相當的情況

while left < rigth and temp >= li[left]:#從列表開頭開始迴圈比較左邊的值

left +=1 #依次向右進一步

li[rigth]=li[left] #將找到的值直接寫到列表最開始(右邊) 因為temp >= li[left] 所以會出現 兩個值相當的情況

li[left] = temp

return left

def quick_sort(li,left,rigth):#快速排序利用將列表分為左右兩邊的方式,分別進行遞迴比較排序

if left < rigth:

mid = partition(li,left,rigth) #獲取中間的值

quick_sort(li,left,mid-1) #迴圈呼叫 開始遞迴左邊

quick_sort(li,mid+1,rigth) #迴圈呼叫 開始遞迴右邊

# 時間複雜度 最優情況為o(nlogn) 最壞情況為o(n^2) 如果第一次取得的值正好是最大或者最小的 那麼會出現o(n^2) 解決辦法是可以使用隨機取第乙個值的方法進行改進,不過只是將最壞情況的概率減小了,並不能解決此問題

li = [5,7,4,6,3,1,2,9,8];

if __name__ == "__main__":

quick_sort(li,0,len(li)-1)

print li

________________________________

# php快速排序 因為python操作的是陣列的位址 而php在傳值的時候是把當前的值複製乙份,因為遞迴是無法直接返回的,只能操作位址,所以這裡需要傳入陣列位址

________________________________

//快速排序

function partition(&$li,$left,$right)

$li[$left] = $li[$right];

//var_dump($li);echo "

"; //echo $li[$left];exit;

while ($left < $right && $li[$left] <= $temp)

$li[$right] = $li[$left];

//var_dump($li);echo "

";

} $li[$left] = $temp;

return $left;

//$mid = round(count($li)/2);

//return $temp;

}function quick_sort(&$li,$left,$right)

}$li = [5,7,4,6,3,1,2,9,8];

$right = count($li)-1;

quick_sort($li,0,$right);

var_dump($li);

python php 氣泡排序

usr bin python coding utf 8 def bubble sort li 迴圈列表每次拿出乙個值,和列表中所有的值進行比較之後然後切換位置 for i in range len li 1 躺數迴圈 最後乙個數不用比較 已經是最大或者最小的數 所以躺數減少1 exchange fa...

遞迴 快速排序 快速排序

問題描述 用遞迴來實現快速排序 quick sort 演算法。快速排序演算法的基本思路是 假設要對乙個陣列a進行排序,且a 0 x。首先對陣列中的元素進行調整,使x放在正確的位置上。同時,所有比x小的數都位於它的左邊,所有比x大的數都位於它的右邊。然後對於左 右兩段區域,遞迴地呼叫快速排序演算法來進...

python php 網路程式設計 位元組序轉換

1.python寫法 import socket def convert integer data 1234 32 bit print original s long host byte order s,network byte order s data,socket.ntohl data sock...