複習點演算法知識,水仙花數加氣泡排序,以及一道演算法題

2022-09-17 14:42:20 字數 2436 閱讀 3604

部落格:

氣泡排序的思想: 每次比較兩個相鄰的元素, 如果他們的順序錯誤就把他們交換位置

比如有五個數: 12, 35, 99, 18, 76, 從大到小排序, 對相鄰的兩位進行比較

經過第一趟比較後, 五個數中最小的數已經在最後面了, 接下來只比較前四個數, 依次類推

氣泡排序原理: 每一趟只能將乙個數歸位, 如果有n個數進行排序,只需將n-1個數歸位, 也就是說要進行n-1趟操作(已經歸位的數不用再比較)

#!/usr/bin/env python

# coding:utf-8

defbubblesort(nums):

for i in range(len(nums)-1): # 這個迴圈負責設定氣泡排序進行的次數

for j in range(len(nums)-i-1): # j為列表下標

if nums[j] > nums[j+1]:

nums[j], nums[j+1] = nums[j+1], nums[j]

return nums

nums = [5,2,45,6,8,2,1]

print bubblesort(nums)

缺點: 氣泡排序解決了桶排序浪費空間的問題, 但是氣泡排序的效率特別低

設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。

如:n=3時,3個整數13,312,343,連成的最大整數為34331213。

如:n=4時,4個整數7,13,4,246連線成的最大整數為7424613。

有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n(n<=100),第二行包含n個數(每個數不超過1000,空格分開)。

本人解法,使用類似氣泡排序的方式

second = [123,345,444,444412,897,999,456]

for ii in range(len(second)-1):

for i in range(len(second)-1):

num1 = int(str(second[i])+str(second[i+1]))

num2 = int(str(second[i+1])+str(second[i]))

# print(num1,num2,num1-num2)

if num1氣泡排序的思想: 每次比較兩個相鄰的元素, 如果他們的順序錯誤就把他們交換位置

比如有五個數: 12, 35, 99, 18, 76, 從大到小排序, 對相鄰的兩位進行比較

經過第一趟比較後, 五個數中最小的數已經在最後面了, 接下來只比較前四個數, 依次類推

氣泡排序原理: 每一趟只能將乙個數歸位, 如果有n個數進行排序,只需將n-1個數歸位, 也就是說要進行n-1趟操作(已經歸位的數不用再比較)

#!/usr/bin/env python

# coding:utf-8

defbubblesort(nums):

for i in range(len(nums)-1): # 這個迴圈負責設定氣泡排序進行的次數

for j in range(len(nums)-i-1): # j為列表下標

if nums[j] > nums[j+1]:

nums[j], nums[j+1] = nums[j+1], nums[j]

return nums

nums = [5,2,45,6,8,2,1]

print bubblesort(nums)

缺點: 氣泡排序解決了桶排序浪費空間的問題, 但是氣泡排序的效率特別低

設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。

如:n=3時,3個整數13,312,343,連成的最大整數為34331213。

如:n=4時,4個整數7,13,4,246連線成的最大整數為7424613。

有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n(n<=100),第二行包含n個數(每個數不超過1000,空格分開)。

本人解法,使用類似氣泡排序的方式

second = [123,345,444,444412,897,999,456]

for ii in range(len(second)-1):

for i in range(len(second)-1):

num1 = int(str(second[i])+str(second[i+1]))

num2 = int(str(second[i+1])+str(second[i]))

# print(num1,num2,num1-num2)

if num1second[i+1],second[i] = second[i],second[i+1]

print(2222,second)

趣味演算法 水仙花數

趣味演算法 水仙花數 乙個n位正整數 n 3 它的每個位上得數字的n次冪之和等於它本身。1 計算當前正整數的位數 2 計算每個位數上n次冪的和 3 判斷是否為水仙花數。include include include 0 the number is not narcissus number 1 the...

小演算法 水仙花數

水仙花數是指乙個 n 位數 n 3 它的每個位上的數字的 n 次冪之和等於它本身。例如 1 3 5 3 3 3 153 初步 int nmax 9999999 int nresult 9999 int ncount 0 for int i 0 i nmax i else if i 100 else ...

Java演算法之「水仙花數」

列印出所有的 水仙花數 所謂 水仙花數 是指乙個三位數,其各位數字立方和等於該數本身。分析 水仙花數首先是個三位數,即在100 999這個範圍內選出所謂的 水仙花數 然後各個位數分別進行立方運算,然後再求和,並且等於其本身。假設乙個水仙花數為i,先將其各個位上的數依次摘出來,然後求平方和,即,i 1...