Python實現對任意維陣列的的某一維實現快速排序

2021-10-04 12:41:51 字數 1143 閱讀 1395

主要想法和快速排序一致,不同的是將某一維度作為索引,該索引位置修改了,則對應的原始資料也按照對應的維度進行修改即可,以下例子為二維陣列的第乙個維度進行的乙個快速排序

輸入的nums_arrays

nums_arrays = [[1,3],[4,2],[3,5]]

輸出的結果[[1, 3], [3, 5], [4, 2]]

def fuction(nums_array,choose):

nums = [x[choose] for x in nums_array]

def quicksort(nums_array,nums,start,end):

if start < end:

mid = nums[start]

left = start+1

right = end

while left <= right:

while left <= right and nums[left] <= mid:

left += 1

while left <= right and nums[right] >= mid:

right -= 1

if left <= right:

nums[left],nums[right] = nums[right],nums[left]

nums_array[left],nums_array[right] = \

nums_array[right],nums_array[left]

nums[start],nums[right] = nums[right],nums[start]

nums_array[start],nums_array[right] = \

nums_array[right],nums_array[start]

quicksort(nums_array,nums,start,right-1)

quicksort(nums_array,nums,right+1,end)

return nums,nums_array

nums,nums_array = quicksort(nums_array,nums,0,len(nums)-1)

return nums_array

print(fuction(nums,choose=0))

模擬任意維陣列的類

以下是乙個可以模擬任意維陣列的類.大小可以任意指定.缺點是建立起來比較麻煩,需要乙個維對應的大小的陣列.我已經修改了好幾次了。bug我沒怎麼測試過.估計還有的。但是程式就是這個意思.各位有興趣把它修改的好一些.修改了如果有分享精神的話.也讓nhsoft知道一下.我的email xheartblue ...

python 建立任意大小,任意維的列表。

mat 0 for i in range 5 for j in range 5 0 for i in range 5 的意思是建立乙個長度為5,數值全部為0的列表 0 for i in range 5 for j in range 5 如果把表紅的字換為x x for j in range 5 不難...

PHP 將任意維數陣列轉為一維陣列

先設定乙個陣列 arr a b c d e f g h i m n 第一種方法 遞迴 function toonearray array else return res arr echo print r toonearray arr 第二種方法 array walk recursice res ar...