氣泡排序的優化 分割字串

2021-09-25 14:45:55 字數 1567 閱讀 3884

氣泡排序在學習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 取的字串的...