演算法排序題1

2021-10-11 14:24:31 字數 2049 閱讀 2216

『』』

給出乙個陣列,如 [7864, 284, 347, 7732, 8498],現在需要將陣列中的數字拼接起來,

如按順序依次拼接為:786428434777328498,陣列中的數字拼接順序可以任意,

編寫程式,返回「最大的可能拼出的數字」。(以上面陣列為例,返回:8498 7864 7732 347 284)

『』』

class

sort_data

:'''取出相同位置數字最大的資料'''

'''一次次迴圈直到所有資料全部找出來'''

def__init__

(self,data)

: self.target_data =

self.data_str =

[str

(i)for i in data]

# 轉換成str ['8498', '7864', '7732', '347', '284']

defsort

(self)

:'''先排序後拼接'''

while

len(self.data_str)!=1

: n =

0 tem,m = self.hello(n,self.data_str)

if tem.count(m)==1

:#判斷最大的數是不是有重複的

#找出第乙個數字最大的數並新增

max_index = tem.index(m)

res = self.data_str.pop(max_index)

else

: resp_data =

[j for j in self.data_str if j.startswith(

str(m))]

#相同位置字母相同的數

n1 =

1while

len(resp_data)!=1

: tem, m = self.hello(n1,resp_data)

if tem.count(m)==1

:'''找出第乙個數字最大的數並新增'''

max_index = tem.index(m)

res = resp_data.pop(max_index)

self.data_str.remove(res)

else

: n1 +=

1for i in resp_data:

iflen

(i)<= n1:

n1 =

max(

len(i)

for i in resp_data)-1

self.target_data.extend(self.data_str)

# 列表轉成字串

self.target_data =

''.join(self.target_data)

defhello

(self,n,data)

:#拿到所有元素的第乙個數字,找到最大的數

tem =

k =0while

len(tem)

!=len

(data)

:try

:for i,j in

enumerate

(data[k:])

:)except

: k = i +

1'0'

) m =

max(tem)

return tem,m

l =[

8256

,82561

,82562

,943

]l1 =

[7864

,284

,347

,7732

,8498

]s = sort_data(l)

s.sort(

)print

(s.target_data)

演算法題 排序

排序演算法 include include include using namespace std vector int selects vector int v return v vector int inserts vector int v v j note break return v vec...

排序 排序演算法1

所謂氣泡排序就是,一組資料,以遞增的順序來說明,從第乙個數data 0 開始,依次和後面的資料比較大小,如果data 0 大於當前位置上的數就和這個數交換位置並繼續和後面的數相比,如果遇到比自己大的數了,就不交換 下一次開始的位置是data 1 然後依次往後推。void myswap int num...

排序演算法 1 選擇排序演算法

這篇部落格分為兩個部分 選擇排序演算法基本思想 實現與解析 由於這個排序演算法比較簡單,因此這篇博文就不做過多解釋了 一.選擇排序演算法基本思想 1 選擇排序 小到大排序 1.遍歷所有未排序的元素 找到最小的那個元素 2.將這個元素與未排序序列的第乙個元素交換位置 3.當剩下乙個元素時 排序結束 o...