每個python排序函式都是在整數的乙個列表上進行操作的,並且都會用乙個swap函式來交換列表中兩項的位置。
def
swap
(lyst, i ,j)
: temp = lyst[i]
lyst[i]
= lyst[j]
lyst[j]
= temp
exchange the items at the positions i and j.
選擇排序
排序最簡單的策略就是搜尋整個列表,找到最小項的位置。如果不在列表的第一位,演算法就交換此項和第一項的位置。然後,演算法回到第二個位置並且重複這個過程。當演算法到達最後一項時,列表就是排序好的了。這個演算法就叫做selection sort。
def
ss(lyst)
: i =
0while i <
len(lyst)-1
: minindex = i
j = i +
1while j <
len(lyst)
:if lyst[j]
< lyst[minibdex]
: minindex = j
j +=
1if minindex != i:
swap(lyst, minindex, i)
i +=
1
巢狀迴圈,i,j表示position。例:i=0. j=1
j小於list長度時,從列表第二項先與第一項(minindex)比較大小,最小項與下一項比較,直到最後一項
然後從第二項重新開始迴圈。
氣泡排序
從列表開頭處開始,並且比較一對資料項,直到移動到列表的末尾。每當成對的兩項之間的順序不正確的時候,演算法就交換其位置。這個過程可以將最大項以冒泡的方式排到最後一項。然後,演算法從第二項重複,直到該演算法從最後一項開始執行,此時,列表是排序好了的。
def
bs(lyst)
: n =
len(lyst)
:while n >1:
i =1while i < n:
if lyst[i]
< lyst[i-1]
: swap(lyst, i , i-1)
i +=
1 n -=
1
插入排序
策略:
def
is(lyst)
: i =
1while i <
len(lyst)
: itemtoinsert = lyst[i]
j = i -
1while j >=0:
if itemtoinsert < lyst[j]
: lyst[j+1]
= lyst[j]
j -=
1else
:break
lyst[j+1]
= itemtoinsert
i +=
1
以上三種方法都可以實現排序,但是效率都不高。在最壞情況和平均情況下,效能都是o(n2). 用C語言描述資料結構
用c語言描述資料結構 學好計算機,主要要從三個方面做起,其中,第一步就是要學好各種語言,這是第一步,對各種語言有乙個大體的了解 然後就是資料結構了,它是計算機中的一門核心的課程,也是一門資訊計算 在最後本人認為就是演算法了,它也是這三部中最難得一步了,要學好計算機,做一名優秀的程式元,這三步是最基本...
資料結構(java語言描述) 堆
堆是一棵完全二叉樹,堆的每個父節點的值都大於等於子節點的值。或者 我們用陣列來儲存二叉樹。public class maxheap extends comparable public maxheap public maxheap e arr 返回堆中的元素個數 public int size 返回乙...
c語言描述資料結構應用
學生的學號 姓名 根據輸入資料建立一棵二叉樹 第乙個輸入資料作為根節點 要求 左子樹節點的學號總比根節點小,右子樹節點的學號總比根節點大。1 鍵盤輸入你所在宿舍的同學資訊到二叉樹 2 按學號大小輸出所有同學資訊 3 給定學號,查詢該學號同學的姓名 樹的操作 include stdio.h inclu...