JAVA資料結構和演算法 陣列及排序演算法

2021-09-09 05:24:49 字數 2756 閱讀 9250

陣列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.

print

("第"

+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 二分查詢,分別找出左邊界和右邊界,左...