# 資料結構 20221212_Sorting
>撰寫人[name=AmiYaku1049] [首頁--天空路1049號](https://skys-kid-lai.github.io/1004/)
>>最後編輯[time=Wed, Jan 18, 2023 8:17 PM]
___
## 題目敘述
- 測資:課本第8-56頁第8題,11, 8, 14, 7, 6, 8', 23, 4
- 排序
1.氣泡法
2.選擇法
3.插入法
- 輸出內容
1.第N回排序結果
2.比較次數
3.交換次數
## 程式碼
```java=
class ClassWork_1110832059_1212_Sorting extends Object
{
int data[] = new int[]{11,8,14,7,6,8,23,4};
int bdata[] = new int[]{11,8,14,7,6,8,23,4};
int sdata[] = new int[]{11,8,14,7,6,8,23,4};
int idata[] = new int[]{11,8,14,7,6,8,23,4};
public static void main(String[] args)
{
ClassWork_1110832059_1212_Sorting point = new ClassWork_1110832059_1212_Sorting();
System.out.println("----------原始資料----------");
point.ShowArr();
System.out.println("\n----------氣泡排序----------");
point.ShowBubble();
System.out.println("\n----------選擇排序----------");
point.ShowSelect();
System.out.println("\n----------插入排序----------");
point.ShowInsert();
}
public void ShowArr()
{
for (int i = 0;i < data.length ;i++ )
{
System.out.print(data[i] + " ");
}
System.out.println();
}
public void ShowBubble()
{
int compare = 0, change = 0, i, j, tmp;
for (i = bdata.length-1; i >= 0 ; i-- )
{
for (j = 0; j < i; j++ )
{
if(bdata[j+1] < bdata[j])
{
tmp = bdata[j];
bdata[j] = bdata[j+1];
bdata[j+1] = tmp;
change ++;
compare ++;
}
else
compare ++;
}
System.out.print("第" + (bdata.length-i) + "次排序後的結果:");
for (j = 0; j < bdata.length ; j++ )
{
System.out.print(bdata[j] + " ");
}
System.out.println();
}
System.out.println("\n比較次數:" + compare + " 交換次數:" + change);
}
public void ShowSelect()
{
int compare = 0, change = 0, tmp,i,j;
for (i = 0; i < sdata.length -1; i++)
{
for (j = i+1; j < sdata.length; j++)
{
if(sdata[j] < sdata[i])
{
tmp = sdata[i];
sdata[i] = sdata[j];
sdata[j] = tmp;
change ++;
compare ++;
}
else
compare ++;
}
System.out.print("第" + (i+1) + "次排序後的結果:");
for (j = 0; j < sdata.length ; j++ )
{
System.out.print(sdata[j] + " ");
}
System.out.println();
}
System.out.println("\n比較次數:" + compare + " 交換次數:" + change);
}
public void ShowInsert()
{
int compare = 0, change = 0, tmp, i, j, k;
for (i = 1; i < idata.length; i++)
{
tmp = idata[i];
j = i -1;
while(j >= 0 && tmp < idata[j])
{
idata[j+1] = idata[j];
j--;
compare++;
}
change++;
idata[j+1] = tmp;
System.out.print("第" + i + "次排序後的結果:");
for(k = 0; k <idata.length; k ++)
{
System.out.print(idata[k] + " ");
}
System.out.println();
}
System.out.println("\n如果第二小於第一元素的次數:" + compare + "\n將最小的元素向前放的次數:" + change);
}
}
```
## 結果圖示

## 用書資訊
>書名:圖解資料結構 使用java(第三版)
>作者:吳燦銘、胡昭民
>出版社:博碩文化
>出版年份:2018年05月