陣列array:無序查陣列找慢,插入快;有序陣列查詢快,插入/刪除慢;大小固定,儲存單一元素
棧stack:先進後出
佇列queue:先進先出
鍊錶linked list:插入/刪除快;查詢慢
樹tree :二叉樹、紅黑樹、2-3-4樹
雜湊表hash
堆heap:對最大項資料訪問快
圖graph
1.只能儲存單一型別的資料1.陣列宣告、初始化、查詢遍歷
//宣告長度為3的陣列myarray,存放int型別,並初始化
int[
] myarray =
newint[3
];myarray[0]
=1; system.out.
println
(myarray[0]
);//宣告值為的陣列myarray
int[
] myarray =
;for
(int i =
0; i < myarray.length; i++
)
2.陣列的增刪改—一般不用陣列
1)增加:查詢到需要增加的位置索引,所有值向後移動
2)刪除:查詢到需要刪除的位置索引,所有值向前移動
3)修改:查詢到需要修改的位置索引,替換
1.氣泡排序
基本原理
①比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
②對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數(也就是第一波冒泡完成)。
③針對所有的元素重複以上的步驟,除了最後乙個。
④持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
//第 i輪排序的結果為
system.out.
("第"
+i+"輪排序後的結果為:");
display
(array);}
return array;
}//遍歷顯示陣列
public
static
void
display
(int
array)
system.out.
println()
;}public
static
void
main
(string[
] args)
;//未排序陣列順序為
system.out.
println
("未排序陣列順序為:");
display
(array)
;
system.out.
println
("-----------------------"
);
array =
sort
(array)
;
system.out.
println
("-----------------------"
);
system.out.
println
("經過氣泡排序後的陣列順序為:");
display
(array);}
}時間複雜度:兩層迴圈o(n^2)
2.選擇排序
基本思想
①從待排序序列中,找到關鍵字最小的元素
②如果最小元素不是待排序序列的第乙個元素,將其和第乙個元素互換
③從餘下的 n - 1 個元素中,找出關鍵字最小的元素,重複(1)、(2)步,直到排序結束
}//將找到的最小值和i位置所在的值進行交換
if(i != min)
}return array;
}時間複雜度:o(n*2)
3.直接插入排序
基本思想
每一步將乙個待排序的記錄,插入到前面已經排好序的有序序列中去,直到插完所有元素為止。
//存在比其小的數,插入
}return array;
}時間複雜度:o(n*2)
Java資料結構與演算法 陣列逆轉
陣列的逆序 陣列中的元素,進行位置上的交換 逆序 不等於 反向遍歷 就是陣列中最遠的兩個索引,進行位置交換,實現陣列的逆序 使用的是陣列的指標思想,就是變數,思想,可以隨時變換索引 反轉 reverse 實現步驟 1.定義方法,實現陣列的逆序 2.遍歷陣列 實現陣列的最遠索引換位置 使用臨時的第三方...
資料結構與演算法 陣列
陣列是一種線性表資料結構。它用一組連續的記憶體空間,來儲存一組具有相同型別的資料。其中有幾個重要的概念 非線性表 連續的記憶體空間 儲存相同型別的資料 如圖所示,這是乙個長度為5的int陣列arr,我們假設起始的記憶體位址為1000,那麼第乙個元素的記憶體位址範圍就是 1000 1003,這是因為乙...
資料結構與演算法 陣列
題型1 如何用遞迴實現陣列求和 方法1 題型2 如何用乙個for迴圈列印乙個二維陣列 方法1 array在二維陣列中的行號和列號分別為 i maxy i maxy 題型3 用遞迴和非遞迴的方法實現二分查詢 題型4 如何在排序陣列中,找出給定數字出現的次數 方法1 二分查詢,分別找出左邊界和右邊界,左...