生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法--2.数组的定位排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題:
- 給定一個數組A以及下標i,將數組元素進行調整,使得所有比A[i]小的元素排在前邊,接著是所有等于A[i]的元素,最后排列的是比A[i]大的元素
思路:
第一步:將數組分成兩部分,一部分元素都小于pivot,第二部分都大于或者等于pivot;第二步:將第二部分元素再次分成兩部分,第一部分所有元素都等于pivot,第二部分元素都大于pivot.
def rearrangeByPivot(array
, begin
, end
, pivot
, checkEqual
):if end
<=begin
:returnwhile begin
< end
:if (checkEqual
is True and array
[begin
] >= pivot
) or (checkEqual
is False and array
[begin
] > pivot
):temp
= array
[begin
]array
[begin
] = array
[end
]array
[end
] = tempend
-= 1else:begin
+= 1return array
def rearrangeArray(array
,i
):if (len(array
)<=1):return arraypivot
= array
[i
]array
= rearrangeByPivot
(array
,0,len(array
)-1,pivot
,True)for j
in range(len(array
)):if array
[j
] >= pivot
:breakarray
=rearrangeByPivot
(array
, j
, len(array
)-1, pivot
, False)return arrayS
= [6,5,5,7,9,4,3,3,4,6,8,4,7,9,2,1]
i
= 5
S
= rearrangeArray
(S
,i
)
print(S
)
[1, 2, 3, 3, 4, 4, 4, 6, 8, 7, 7, 9, 5, 5, 6, 9]
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎
總結
以上是生活随笔為你收集整理的数据结构与算法--2.数组的定位排序的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。