上實驗,老師講得太無聊,電腦上只有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型...