演算法與資料結構之排序一

2021-08-28 20:01:14 字數 1435 閱讀 9915

1、選擇排序

2、插入排序

3、氣泡排序

4、希爾排序(插入排序的改進)

一、選擇排序

**:

def selectionsort(arr):

for i in range(len(arr)):

minindex=i

for j in range(i,len(arr)):

if arr[j] < arr[minindex]:

minindex = j

arr[i],arr[minindex]=arr[minindex],arr[i]

return arr

a=[3,5,6,2,6]

print selectionsort(a)

二、插入排序

**:

def insertionsort(arr):

for i in range(1,len(arr)):

# print i

for j in reversed(range(1,i+1)):

if arr[j] < arr[j-1]:

arr[j],arr[j-1] =arr[j-1],arr[j]

else:

break

return arr

a=[3,5,6,2,6,6,5,3,2,1,5,6,7,8,9,5,4,3,2]

print insertionsort(a)

三、氣泡排序

**:

def bubblesort(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

a=[3,5,6,2,6,6,5,3,2,1,5,6,7,8,9,5,4,3,2]

print bubblesort(a)

四、希爾排序(插入排序的改進)

**:

def shellsort(arr):

n=len(arr)

h=1while h=1:

for i in range(h,n):

j=iwhile j>=h and arr[j] < arr[j-h]:

arr[j], arr[j-h] = arr[j-h], arr[j]

j-=h

h=h/3

return arr

a=[3,5,6,2,6,6,5,3,2,1,5,6,7,8,9,5,4,3,2]

print shellsort(a)

1、

資料結構與演算法之排序

三 演算法效能 二 七種排序演算法 資料結構之線性表 資料結構之鍊錶 資料結構之串 資料結構之圖 資料結構之排序演算法 對n個資料執行某種操作,使其按照某種規則有序的排列,這樣的操作就是排序。內排序與外排序 按照排序過程中資料是否全放在記憶體中,可以分為內排序和外排序 交插選並 其中內排序又分為插入...

《資料結構與演算法》之排序

資料結構與演算法 之鍊錶 資料結構與演算法 之鏈棧 資料結構與演算法 之佇列 資料結構與演算法 之二分查詢 資料結構與演算法 之二叉樹 如果你是一名程式設計師,或多或少你都了解過 聽說過排序。在專案中我們也會經常用到排序,排序非常重要,現在我在這裡分享一些經典的排序演算法。先附上demo位址 氣泡排...

資料結構之排序演算法(一)

public class sort 選擇排序 param arr return 不穩定 初始時在序列中找到最小 大 元素,放到序列的起始位置作為已排序序列 然後,再從剩餘未排序元素中繼續尋找最小 大 元素,放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。public static void ...