『』』
給出乙個陣列,如 [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...