稀疏陣列(壓縮演算法)及氣泡排序詳解

2021-10-06 11:20:34 字數 2333 閱讀 1497

稀疏陣列邏輯框架

(該陣列共有6行7列,有8個有效值)

1.隨機建立個二維陣列

//1.建立乙個二維陣列11*11    

int[

] array1 =

newint[11

][11]

; array1[1]

[2]=

1;//設定第一行第二列的值為1

array1[2]

[3]=

5;//設定第二行第三列的值為5

2.輸出原始的陣列
for

3.轉為稀疏陣列儲存,查出有效值的個數

//轉換為稀疏陣列儲存

int sum =0;

//獲取有效值的個數

for(

int i=

0;i<

11;i++)}

} system.out.

println

("有效值得個數"

+sum)

;

4.建立稀疏陣列並實現轉換
//建立乙個稀疏陣列的陣列

int[

] array2 =

newint

[sum+1]

[3];

//建立乙個行為有效值得行+1(第一行要統計,所以+1) 列為3的稀疏陣列

array2[0]

[0]=

11;//第一行第一列表示總共有11行

array2[0]

[1]=

11;//第二行第二列表示總共有11列

array2[0]

[2]=sum;

//第一行第三列為有效值總數

int count =0;

//遍歷二維陣列,將非零的值,存放稀疏陣列中

for(

int i =

0;i}//輸出稀疏陣列

system.out.

println

("稀疏陣列");

5.還原,將稀疏陣列還原為原始陣列

//讀取稀疏陣列

int[

] array3 =

newint

[array2[0]

[0]]

[array2[0]

[1]]

;//給其中的元素還原它的值

for(

int i=

1;i)//因為array2第一行是宣告的不用寫 所以從i=1開始

system.out.

println

("輸出還原的陣列");

(時間複雜度n2)

int emap;

//定義臨時容器

int[

] arrey =

;//隨便定義乙個陣列

for(

int i =

0; i < arrey.length-

1;i++

)//外層迴圈,判斷我們要走多少次,因為每走一次迴圈只能完成乙個數的正確位置,例如第一次迴圈實現第乙個數最小,第二次實現第二個數最小..........}}

system.out.

println

(arrays.

tostring

(arrey));

是arrays類裡面的乙個方法,相當於把陣列遍歷。

}

​ 稀疏陣列實質其實就是兩個陣列之前的轉換,只要搞清楚有效值所在的行和列就能完美的實現轉換。如果同乙個陣列中擁有大量重複的數字,就可以用稀疏陣列將其轉換,這樣轉換後減輕了使用者的查詢,不容易漏掉導致出錯!

氣泡排序與稀疏陣列

比較陣列arr中兩個相鄰元素的大小,若arr i 1 arr i 將這兩數交換位置 每次比較都會產生大的和小的數 下一輪比較可以少排一次序 依次迴圈,直到結束 public static void main string args int sort sort arr 呼叫方法 system.out....

氣泡排序演算法詳解及優化

排序原理 比較兩個相鄰的元素,將值大的元素交換至右端,小的元素向上冒泡,這也是冒泡演算法名稱的由來。排序流程如下 1 對陣列中的各資料,依次比較相鄰的兩個元素大小,即第0和第1個比較,第1個和第2個比較.第n 2個和和第n 1個比較,每次比較中如 果前面的大於後面的就交換,這樣第一輪即n次比較後,最...

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...