資料結構與演算法 冒泡和選擇排序

2021-09-10 01:15:32 字數 1292 閱讀 3580

資料結構研究資料之間的關係

1.集合結構

2.線性結構

3.圖形結構

4.樹形結構

鏈式儲存

堆疊 佇列陣列

樹二叉樹

圖乙個演算法的優劣程度可以用空間複雜度和時間複雜度來衡量。

空間複雜度:是乙個演算法在執行過程中臨時占用儲存空間大小的度量

時間複雜度:是乙個演算法在執行過程中所需要計算的工作量

時間複雜度是將輸入值趨近無窮的情況

比如:

public void function1() 

}for (int i = 0; i < n; i++)

// dosomething

}

該程式計次 n²+n+1

n取無窮大,時間複雜度o(n)=n²

互相存在一種或多種特定關係的資料元素的集合

程式 = 資料結構 + 演算法

程式好壞 = 時間複雜度 + 空間複雜度 + 實際應用場景 + 可讀性

優點:尾插效率高,支援隨機訪問

缺點:中間插入和刪除效率低

陣列、arraylist

int t = a;

a = b;

b = t;

//加減法

a=a+b;

b=a-b;

a=a-b;

//效能最優,但無可讀性

a = a ^ b;

b = a ^ b;

a = a ^ b;

位運算異或不同為1,相同為0

資料量小,效率是最高

資料量大,非常慢

氣泡排序

//比較數值,交換

public void bubblesort1(int array) }}

}第一層 內部迴圈n

第二層 n-1

第三層 n-2

第三層 n-3

所以時間複雜度 n+(n-1)+(n-1)...+1=n*1+n*(n-1)/2=n*(n+1)/2

–>優化

//新增flag,一旦某次迴圈中沒有出現任何的交換說明陣列已經有序

public void bubblesort(int array)

}if (flag)

}}

//查詢出最小值,交換

public void selectsort(int array)

}if (i != index)

}}

資料結構與演算法 排序(冒泡 插入和選擇)

氣泡排序 插入排序 選擇排序 我們前面講過,演算法的記憶體消耗可以通過空間複雜度來衡量,排序演算法也不例外。不過,針對排序演算法的空間複雜度,我們還引入了乙個新的概念,原地排序 sorted in place 原地排序演算法,就是特指空間複雜度是 o 1 的排序演算法。我們今天講的三種排序演算法,都...

資料結構和演算法 氣泡排序和選擇排序

package com.test 1 public class demo5 3 int temp 0 中間值 氣泡排序法 外層迴圈,它決定一共走幾趟 for int i 0 i1 i 輸出結果 for int i 0 iout.print arr i 第一次從r 0 r n 1 中選取最小值,與r ...

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...