氣泡排序在學習c語言時就學習過,但是只是學會了怎麼用,具體對於氣泡排序的優化演算法,一時間無從下手。
後來想了想,從人類的邏輯思維下手,如果遇到排好序的數列,直接跳出本次迴圈,能在一定程度上優化**。
#!/usr/bin/python3
l2=n=int
(input
("pls input how many numbers u need:"))
for i in
range
(n):
b=int(
input
("pls input numbers:"))
print
(l2)
count=
0for i in
range
(len
(l2)-1
):flag =
true
for j in
range
(len
(l2)-1
-i):
if l2[j]
>l2[j+1]
: c=l2[j]
l2[j]
=l2[j+1]
l2[j+1]
=c flag =
false
count=count+
1if flag:
break
print
("排序後為:"
,l2)
print
("迴圈遍歷"
,count,
"遍")
這個優化過程是對於已經排好序的數字無需進行遍歷,直接跳出下層迴圈,本身上層迴圈開始時初始化flag為true,下層迴圈開始進行判斷,如果順序本身是正常的話,直接跳出下層迴圈,再從下乙個數開始。
python裡分割字串的函式是split,但是如果自己寫乙個簡單的分割字串的功能的話,還是有點意思的。一開始我是做了乙個迴圈,遇到要切割的字串就直接continue跳出本次迴圈,然後再將其他的輸出,這樣是可以輸出,但最後如果以元組或者列表輸出,就變成乙個乙個字母的輸出,很是彆扭。
於是我決定先定義乙個空數列和乙個空的字串,每次都將字串加入到那個空的字串裡,如果遇到了要切割的符號,就將那個字串追加到列表裡,然後格式化字串為空字串。最後將列表轉為元組輸出,完美解決問題。
#!/usr/bin/python3
s='hello#hello#hello#welcome#welcome#welcome'
print
(s) l1=
s1=''for i in s:
if i ==
'#':
s1=''else
: s1=s1+i
print
(l1)
t1=tuple
(l1)
print
(t1)
字串的氣泡排序
7 2 字串的氣泡排序 20 分 我們已經知道了將n個整數按從小到大排序的氣泡排序法。本題要求將此方法用於字串序列,並對任意給定的k 輸入格式 輸入在第1行中給出n和k 1 k輸出格式 輸出氣泡排序法掃瞄完第k遍後的中間結果序列,每行包含乙個字串。輸入樣例 6 2best cateast afree...
字串排序的優化
對char s 5 10 進行排序 直接交換字元陣列,修改記憶體內容的時間很長 如果乙個字串100b,那交換一次,就要修改大小為100b的記憶體兩次,效率很低。而如果交換的是字串的指標,則效率很高,因為指標大小固定為4b,交換一次,總共只修改了8b記憶體 int main 陣列指標的解法 低效 氣泡...
mysql分割字串 mysql分割字串
專案有通過一批id去過濾結果的需求,因為這個id是從其他平台拉下來的excel,為了避免加引號逗號的麻煩,在mysql儲存過程裡面拼接。在此做個記錄。很多地方用得上。1.通過某個字元,分割字串的函式。輸入分別為f string 待分割字串 f delimiter 分割字元 f order 取的字串的...