排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)

2021-09-03 02:53:57 字數 1383 閱讀 2729

工作原理:

<1>.比較相鄰的元素。如果第乙個比第二個大,就交換它們兩個;

<2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;

<3>.針對所有的元素重複以上的步驟,除了最後乙個;

<4>.重複步驟1~3,直到排序完成。

obj = [10,4,29,5,7,80,34,19,8]

length = len(obj)

for i in range(length):

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

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

obj[j],obj[j+1] = obj[j+1], obj[j]

print(obj)

工作原理:

<1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,

<2>然後,再從剩餘未排序元素中繼續尋找最小(大)元素,

<3>然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

『』』

obj = [10,4,29,5,7,80,34,19,8]

length = len(obj)

for i in range(length):

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

if obj[i] > obj[j]:

obj[i],obj[j] = obj[j], obj[i]

print(obj)

工作原理:

<1>.從第乙個元素開始,該元素可以認為已經被排序;

<2>.取出下乙個元素,在已經排序的元素序列中從後向前掃瞄;

<3>.如果該元素(已排序)大於新元素,將該元素移到下一位置;

<4>.重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;

<5>.將新元素插入到該位置後;

<6>.重複步驟2~5。

obj = [10,4,29,5,7,80,34,19,8]

length = len(obj)

for i in range(length):

for j in range(i,0,-1):

if obj[j-1]>obj[j]:

obj[j-1],obj[j] = obj[j], obj[j-1]

print(obj)

先取乙個小於n的整數d1作為第乙個增量,把檔案的全部記錄分組。所有距離為d1的倍數的記錄放在同乙個組中。先在各組內進行直接插入排序;然後,取第二個增量d21:#迴圈所有增量的可能性

length//=2

result = insertsort(obj,length)

print(result)

Java排序演算法之氣泡排序 插入排序 選擇排序

一 前言 排序是日常中最常見的一種演算法,常見的演算法有 氣泡排序 插入排序 選擇排序 歸併排序 快速排序 計數排序 快速排序 基數排序 桶排序。那麼該怎樣分析和學習排序演算法呢?二 演算法的分析課 在上述的八種排序方法中,根據時間複雜度和是否基於比較可以為三種 排序演算法 時間複雜度 是否基於比較...

排序演算法 氣泡排序 選擇排序 插入排序

氣泡排序演算法 氣泡排序是最簡單的排序演算法之一。此演算法具有二次方程增長階,因此僅適合排序小列表。氣泡排序演算法是階o n 2 的演算法 package com.szy.structure.sort public class bubblesort system.out.println 排序前 fo...

排序演算法 氣泡排序 插入排序 選擇排序

2 穩定性 2.氣泡排序 3.插入排序 4.選擇排序 5.總結 對於演算法,我們首先考慮的就是其時間複雜度和空間複雜度。1 時間複雜度 另外,由於序列順序不一定,不同情況下的時間複雜度也不同,所以我們還要考慮最好情況和最壞情況。2 空間複雜度 這裡引入了乙個新的概念,我們把o 1 的空間複雜度的排序...