資料結構 python語言描述 基礎排序演算法

2021-08-30 02:21:14 字數 1662 閱讀 5671

每個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...