python練習 逆波蘭,氣泡排序,快速排序

2021-07-06 07:16:38 字數 2155 閱讀 3166

上實驗,老師講得太無聊,電腦上只有python還能玩玩,於是我悄悄地敲**。。

python 刪除序列裡多餘的元素:

>>> a=[1,2,2,2,3,4,5,5,5]

>>> b=set(a)

>>> print(b)

set([1, 2, 3, 4, 5])

>>> b=list(b)

>>> print(b)

output: [1, 2, 3, 4, 5]

氣泡排序:

def bubble_sort(a):

length=len(a)

if length<2:

return a

for i in range(length-1):

for j in range(length-i-1):

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

#t=a[j]

#a[j]=a[j+1]

#a[j+1]=t

a[j],a[j+1]=a[j+1],a[j] #簡潔寫法

return a

a =[1,5,3,9,6]

print(bubble_sort(a))

output: [1, 3, 5, 6, 9]

關於那個簡單的交換:等號右邊的a[j+1],a[i]生成元組物件,然後分別賦值給a[i],a[j+1].

逆波蘭表示式的計算(例子:(3+5)*2/4):

def cal(p,a,b):

if p=='+':

return a+b

if p=='-':

return a-b

if p=='*':

return a*b

if p=='/':

return a/b

def work(exp):

if len(exp)==0:

return 0

temp=

result=0

i=0x=0

y=0for i in range(0,len(exp)):

element = exp[i]

if element=='+' or element=='-' or element=='*' or element=='/':

y=temp.pop()

x=temp.pop()

else:

return int(temp.pop())

express=['3','5','+','2','*','4','/']

print(work(express))

output: 4

快速排序的c++寫法:

選擇開始第乙個數字作為基準數字,比他大的放後面,小的放到前面。分治遞迴處理

#include using namespace std;

void quicksort(int a,int left,int right)

a[i]=temp;

quicksort(a,left,i-1);

quicksort(a,i+1,right);

}int main();

quicksort(a,0,7);

for(int i=0;i<8;i++) printf("%4d",a[i]);

return 0;

}

output:

0   1   2   4   5   7   9  12

--------------------------------

process exited with return value 0

press any key to continue . . .

python:

def qsort(a):

if len(a)<=1: return a

return qsort([b1 for b1 in a[1:] if b1=a[0]])

a =[1,4,2,7,9,5,0,12]

print(qsort(a))

output:[0, 1, 2, 4, 5, 7, 9, 12]

注意:a[0:1]和a[0]有型別的差異,前者是陣列,後者是int物件

棧練習 逆波蘭表示式

字尾表示式 逆波蘭表示式 有效操作只有 且運算元是整數 include include include include using namespace std define overflow 2 define ok 1 define error 1 typedef int status typede...

氣泡排序練習

using system using system.collections.generic using system.linq using system.text return list class program double s sort p new sort s p.paixu a for i...

棧的應用之逆波蘭計算器練習

public class operation return result 逆波蘭表示式,在逆波蘭記法中,所有操作符置於運算元的後面,所以逆波蘭表示又稱字尾表示式。逆波蘭記法不需要括號來標識操作符的優先順序。將中綴表示式轉後字尾表示式需要用到兩個棧,乙個是符號棧,乙個是結果棧。先將表示式轉成list型...