資料結構研究資料之間的關係
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個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...